我不明白为什么函数调用中使用的宏不起作用.
#define MAX 255;
printf("max value %d", MAX);
Run Code Online (Sandbox Code Playgroud)
但这是
#define MAX 255;
int m = MAX;
printf("max value %d", m);
Run Code Online (Sandbox Code Playgroud)
在编译之前,预处理器不是替换值.他为什么抱怨?
问题是分号;.去掉它:
#define MAX 255
Run Code Online (Sandbox Code Playgroud)
否则,两个代码示例扩展如下:
printf("max value %d", 255;);
Run Code Online (Sandbox Code Playgroud)
和
int m = 255;;
printf("max value %d", m);
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,它会导致无关紧要的空语句.在第一个程序是不正确的.
请记住,宏定义不是语句.它们是预处理器的指令,指示如何进行令牌替换.