如何在函数调用中使用宏?

jam*_*jam 0 c macros function

我不明白为什么函数调用中使用的宏不起作用.

#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)

在编译之前,预处理器不是替换值.他为什么抱怨?

Sto*_*ica 6

问题是分号;.去掉它:

#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)

在第二种情况下,它会导致无关紧要的空语句.在第一个程序是不正确的.

请记住,宏定义不是语句.它们是预处理器的指令,指示如何进行令牌替换.