我目前正在阅读" 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以及在哪里可以阅读更多相关内容?
感谢。
答案 0 :(得分:5)
#
字符串化运算符将名称扩展为带引号的字符串,所以这里:
printf(#int " = %d\n", int)
到
printf("10" " = %d\n", 10);
相当于:
printf("10 = %d\n", 10);
在示例中,宏定义中的int
参数名称有点混乱,应该用更好的东西替换。