我不明白为什么函数调用中使用的宏不起作用。
#define MAX 255;
printf("max value %d", MAX);
但这是
#define MAX 255;
int m = MAX;
printf("max value %d", m);
预处理器不是替换之前的值 编译。他为什么抱怨?
答案 0 :(得分:6)
问题是分号;
。删除它:
#define MAX 255
否则两个代码示例扩展如下:
printf("max value %d", 255;);
和
int m = 255;;
printf("max value %d", m);
在第二种情况下,它会产生一个无害的空语句。在第一个程序是不正确的。
请记住,宏定义是不是语句。它们是预处理器的指令,指示如何进行令牌替换。
答案 1 :(得分:0)
printf("max value %d", 255;);
语法无效。
int m = 255;;
printf("max value %d", m);
是合法的。