【发布时间】:2017-06-15 14:15:00
【问题描述】:
我不明白为什么在函数调用中使用的这个宏不起作用。
#define MAX 255;
printf("max value %d", MAX);
但这是
#define MAX 255;
int m = MAX;
printf("max value %d", m);
预处理器不是替换了之前的值吗 编译。他为什么抱怨?
【问题讨论】:
我不明白为什么在函数调用中使用的这个宏不起作用。
#define MAX 255;
printf("max value %d", MAX);
但这是
#define MAX 255;
int m = MAX;
printf("max value %d", m);
预处理器不是替换了之前的值吗 编译。他为什么抱怨?
【问题讨论】:
问题是分号;。删除它:
#define MAX 255
否则两个代码示例展开如下:
printf("max value %d", 255;);
和
int m = 255;;
printf("max value %d", m);
在第二种情况下,它会导致一个无害的空语句。首先,程序格式不正确。
请记住,宏定义是不是语句。它们是预处理器的指令,指示如何进行标记替换。
【讨论】:
printf("max value %d", 255;);
语法无效。
int m = 255;;
printf("max value %d", m);
是合法的。
【讨论】: