【发布时间】:2014-01-05 02:00:10
【问题描述】:
我想做的是#define一个宏:
#define a(2)
然后在字符串文字中使用它:string = "a";。
我希望该字符串不被解释为字符串,而是获取a 的值,即 2。我没有成功,有人可以帮忙吗?
【问题讨论】:
标签: c++ c++11 visual-c++ macros
我想做的是#define一个宏:
#define a(2)
然后在字符串文字中使用它:string = "a";。
我希望该字符串不被解释为字符串,而是获取a 的值,即 2。我没有成功,有人可以帮忙吗?
【问题讨论】:
标签: c++ c++11 visual-c++ macros
不,您不能在字符串文字内部进行宏扩展(即让预处理器在文字内部查找要扩展的宏)。
您可以使用 stringify 运算符 (#) 进行宏扩展以生成字符串文字。但那是另一回事。
【讨论】:
#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2
然后STRINGIFY(A) 会给你"2"。您可以将它们并排放置,将其与其他字符串文字连接起来。
"I have the number " STRINGIFY(A) "." 给你"I have the number 2."。
【讨论】:
STRINGIFY(I have the number A)(我不确定最后的点)。