语法:#define name stuff
比如
#define SQUARE( x ) x * x
SQUARE( 5 );
输出是25
但是!如果是
int a = 5;
printf("%d\n" ,SQUARE( a + 1) );
这就不是36了,而是11
因为它替换是printf ("%d\n",a + 1 * a + 1 );
所以为避免符号优先级,所以预定义时括号一定要加上!
注意:
1. 宏参数和 #define 定义中可以出现其他 #define 定义的符号。但是对于宏,不能出现递归。2. 当预处理器搜索 #define 定义的符号的时候,字符串常量的内容并不被搜索。