如何在C中理解这个#define

时间:2015-03-29 13:07:26

标签: c c-preprocessor

我目前正在阅读" C拼图书"我发现了#define,我想了解它是如何工作的。

#define PRINT(int) printf(#int " = %d\n", int)

我之前从未见过类似#int的东西所以我写了一个小程序试试上面的

#include <stdio.h>
#define PRINT(int) printf(#int " = %d\n", int)
int main()
{
    PRINT(10);
}

Result: 10 = 10

在这种情况下预处理器如何解释#int以及在哪里可以阅读更多相关内容?

感谢。

1 个答案:

答案 0 :(得分:5)

# 字符串化运算符将名称扩展为带引号的字符串,所以这里:

printf(#int " = %d\n", int)

printf("10" " = %d\n", 10);

相当于:

printf("10 = %d\n", 10);

在示例中,宏定义中的int参数名称有点混乱,应该用更好的东西替换。