如何理解 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 参数名称有点混乱,应替换为更好的名称。