我正在阅读"The C puzzle book",我发现了#define,我想了解它是如何工作的.
#define PRINT(int) printf(#int " = %d\n", int)
Run Code Online (Sandbox Code Playgroud)
我之前从未见过类似#int的东西所以我写了一个小程序来试试上面的内容
#include <stdio.h>
#define PRINT(int) printf(#int " = %d\n", int)
int main()
{
PRINT(10);
}
Result: 10 = 10
Run Code Online (Sandbox Code Playgroud)
在这种情况下,预处理器如何解释#int以及在哪里可以阅读更多相关内容?
谢谢.
# stringizing operator将名称扩展为带引号的字符串,所以这里:
printf(#int " = %d\n", int)
Run Code Online (Sandbox Code Playgroud)
至
printf("10" " = %d\n", 10);
Run Code Online (Sandbox Code Playgroud)
这相当于:
printf("10 = %d\n", 10);
Run Code Online (Sandbox Code Playgroud)
在示例int中,宏定义中的参数名称有点令人困惑,应该用更好的东西替换.