我们已知 define 是一个预处理指令
define 定义常量
#include <stdio.h>
#define MAX 1000 //define 定义常量 MAX 为 1000
int main()
{
printf("MAX = %d\n", MAX);
return 0;
}
define 定义宏
#include <stdio.h>
#define ADD(x, y) x+y
int main()
{
printf("%d\n", 4 * ADD(1, 2));//结果却不是 12
// 4 * 1 + 2 = 6
return 0;
}
define 定义的宏,相当于替换,和函数是不一样的。
并且 ADD(x, y) x + y 中的 x 和 y 不仅仅可以是一个变量,同样可以是表达式,所以应该给 x 和 y 以及整个宏体都加上括号 ((x)+(y))
#include <stdio.h>
#define ADD(x, y) ((x)+(y))
int main()
{
printf("%d\n", 4 * ADD(1, 2));//结果 12
return 0;
}