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

标签 c function macros

<分区>

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

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

在第二种情况下,它会导致无害的空语句。在第一个程序中,程序格式错误。

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

关于c - 如何在函数调用中使用宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41935626/

相关文章:

C - 指向 int 的局部指针丢失了一半大小

python - 单击按钮的返回值

function - F# 生成随机数时的函数简洁性

c++ - 确定是否传递了类型的宏

c++ - 将定义的函数片段更改为可测试函数,如何传递参数?

c - 我如何从 Visual Studio 2019 中的不同解决方案链接 `.lib` 库?

CreateProcess() 因访问冲突而失败

c - 在 c 宏方面需要帮助

c++ - 有没有机会使双线性插值更快?

swift - 有没有办法在Swift中使用#selector调用带参数的函数