使用#define定义标志符时,结尾不需要加分号
使用#define定义宏:
例:#define SQUARE(X) XX
注意SUQARE和括号之间不能有空格
使用:int ret=SQUARE(5);
预编译时括号内的数直接代替X,如果括号内是5+1
,那么会替换成5+15+1,而不是66,想方便使用,应该把表达式XX改为(X)*(X)
同理,若表达式为X+X,外面乘上一个数,此时分别给X加括号也不起作用,应在给整体加括号,为((X)+(X))
#define定义的宏看上去像是函数,但是不同,使用时里面可以使用其他宏,但是不能出现递归
在宏中,#+参数,不会直接读取参数的值,而是把参数名改成字符串
如:#define PRINT(X) printf(#X“的值是%d\n”,X)
使用:int a=10;PRINT(a);
即可输出:a的值是10
作用是可以把它两端的符号合成一个符号
例:#define CAT(X,Y) X##Y
使用:int shuchu=100;
printf(“%d”,CAT(shu,chu));
就会输出值100;