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

时间:2017-01-30 12:11:14

标签: c function macros

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

#define MAX 255;
printf("max value %d", MAX);

但这是

#define MAX 255;
int m = MAX;
printf("max value %d", m);

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

2 个答案:

答案 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);

是合法的。