例如我有一个宏:
#define PRINT(int) printf(#int "%d\n",int)
我有点知道结果是什么。 但是#int 怎么会代表整个事情呢?
我有点忘了这个细节。任何人都可以给我一个提示吗?
谢谢!
最佳答案
在此上下文中(应用于宏定义中的参数引用),井号表示将此参数扩展为传递给宏的参数的文字文本。
在这种情况下,如果您调用 PRINT(5)
,宏扩展将是 printf("5""%d\n", 5);
这将打印5 5
;不是很有用;但是,如果您调用 PRINT(5+5)
,宏扩展将为 printf("5+5""%d\n", 5+5);
,这将打印 5+5 10
,不那么琐碎了。
这个例子在 this tutorial on the C preprocessor 中有解释。 (顺便说一下,这是 c macro pound sign 的第一个谷歌命中)。
关于c - C宏中的#x是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14351971/