define

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 #define PIN1 char*    //简单的字符串替换(宏替换) PIN1 替换 char*
 5 typedef char* PIN2;    //对类型说明符重新命名         char* 用PIN2 表示
 6 
 7 #define A(x) x;x;x;x;x;x;x;x;x;x;  //输出 0~999 的数字
 8 
 9 #define MAX(a,b) (a>b)?a:b    //带参数宏定义 MAX为宏名 (a,b) 为参数表  他们之间不能有空格
10 
11 #define STR(s1 , s2 , s3 ,sum) strcat(strcat(strcat(sum,s1),s2),s3) //strcat是将后面一个字符串复制到前一个字符串的后面
12 
13 #define CORRECT "abc"
14 int main3()
15 {
16     #if( 0 )
17       PIN1 x,y;    //定义define后 char *x , y;  指针为4个字节 
18     PIN2 a,b;    //定义typedef后 char *x , *y;
19 
20     printf("By #define : %d   %d \n \n",sizeof(x),sizeof(y));
21     printf("By #typedef : %d   %d \n \n",sizeof(a),sizeof(b));
22     #endif
23 
24     #if( 0 )
25     int n = 0;
26     A(A(A(printf("%4d",n++))));
27     if(n % 10 == 0) printf("\n");
28     #endif
29 
30     #if( 0 )
31     int x, y, max;
32     printf("input two numbers:");
33     scanf("%d %d",&x,&y);
34     max = MAX(x,y);
35     printf("max = %d\n",max);
36     #endif
37 
38     #if( 0 )
39     char str1[] = "I", str2[] = "love" , str3[] = "you" , str[40] = "";
40     STR(str1,str2,str3,str);
41     printf("\n\tstr1 = %s\n\tstr2 = %s\n\tstr3 = %s\n\tstr = %s",str1,str2,str3,str);
42     #endif
43 
44     #if( 0 )
45 
46     char str[40];
47     int strcmp(char *str1, char *str2);
48     scanf("%s",str);
49     #ifndef CORRECT                //如果未声明CORRECT 就往下执行定义
50     #define CORRECT "abc"
51     #endif
52     if(strcmp(str,CORRECT) == 0)
53     {
54 
55         printf("you‘re right");
56     }
57     else
58     {
59         printf("error");
60     }
61     
62     #endif
63 
64 
65     return 0;
66 }

 

define

上一篇:877. 石子游戏


下一篇:JUC回顾之-Semaphore底层实现和原理