【发布时间】:2015-09-01 17:31:04
【问题描述】:
我第一次看到字符串化和令牌粘贴。我觉得它可能是这个宏的好工具:
#define MY_NUMBER 3
#define MY_STRING "the number three: ##MY_NUMBER"
printf("%s\n", MY_STRING);
应该输出:
the number three: 3
【问题讨论】:
-
printf("%s %d\n", MY_STRING, MY_NUMBER)怎么了??? -
printf 仅用于测试。真正的问题是创建宏。
-
预处理器运算符(# 和 ##)在带引号的字符串文字中不起作用。您也不能使用标记连接来连接字符串文字;只有个别代币。 (但是,您可以通过一个接一个地编写它们来连接两个字符串文字:
"Hello, " "world!")。最后,您只能对宏参数使用字符串化运算符 (#)。 @alk:链接的答案很好,但我担心这并不是对这种混乱的真正答案。
标签: c macros stringification