在字符串文字中展开宏

时间:2013-12-17 10:39:39

标签: c++ c++11 visual-c++ macros

我要做的是#define一个宏:

#define a(2)

以后在字符串文字中使用它:string = "a";

我希望将该字符串解释为不是字符串,而是获取a的值,即2.我没有成功,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:22)

#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."

答案 1 :(得分:5)

不,你不能进行宏扩展INSIDE字符串文字(即让预处理器查看文字以便宏扩展)。

您可以进行宏扩展以生成以stringify运算符(#)开头的字符串文字。但那是另一回事。