c - C宏中的#x是什么意思?

标签 c macros c-preprocessor stringification

例如我有一个宏:

#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/

相关文章:

c - 尝试用C语言构建一个SSH蜜 jar

Haskell 宏创建一个从名称到某些表达式的 Map?

C:这个宏是什么意思?

c++ - 有什么方法可以判断我的代码是否是用 cl.exe 编译的?

c - 如何以编程方式将整数映射到 const 字符串?

c++ - C 预处理器在多大程度上考虑整数文字后缀?

c - 需要帮助通过 C 管道使用 gnuplot 绘制最简单的 x,y 图

c - 如何测试我的 gstreamer 插件?是否有用于 gstreamer 插件测试的标准测试套件?

C 中的大小写可变宏

c - 在 C 中使用 utime 在 UNIX 上获取文件修改时间