如何理解 C 语言中的#define
How to Understand this #define in C
我目前正在阅读 "The C puzzle book",我发现了一个#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?我在哪里可以阅读更多相关信息?
谢谢。
#
stringizing operator 将名称扩展为带引号的字符串,所以这里:
printf(#int " = %d\n", int)
到
printf("10" " = %d\n", 10);
相当于:
printf("10 = %d\n", 10);
在示例中,宏定义中的 int
参数名称有点混乱,应替换为更好的名称。
我目前正在阅读 "The C puzzle book",我发现了一个#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?我在哪里可以阅读更多相关信息?
谢谢。
#
stringizing operator 将名称扩展为带引号的字符串,所以这里:
printf(#int " = %d\n", int)
到
printf("10" " = %d\n", 10);
相当于:
printf("10 = %d\n", 10);
在示例中,宏定义中的 int
参数名称有点混乱,应替换为更好的名称。