C++ 在字符串文本中展开宏

C++ 在字符串文本中展开宏,c++,c++11,visual-c++,macros,C++,C++11,Visual C++,Macros,我想做的是定义一个宏: #define a(2) 然后在字符串文本中使用它:string=“a” 我希望该字符串不被解释为字符串,而是获得a的值,即2。我没有成功,有人能帮我吗 #define STRINGIFY2(X) #X #define STRINGIFY(X) STRINGIFY2(X) #define A 2 然后STRINGIFY(A)将为您提供“2”。您可以通过将它们并排放置,将其与其他字符串文字连接起来 “我有一个数字”STRINGIFY(A)”。“给你一个“我有一个数字2。

我想做的是定义一个宏:

#define a(2)
然后在字符串文本中使用它:
string=“a”

我希望该字符串不被解释为字符串,而是获得
a
的值,即2。我没有成功,有人能帮我吗

#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2
然后
STRINGIFY(A)
将为您提供
“2”
。您可以通过将它们并排放置,将其与其他字符串文字连接起来


“我有一个数字”STRINGIFY(A)”。“
给你一个
“我有一个数字2。”

不,你不能在字符串文本内部进行宏扩展(即,让预处理器在文本内部查找要扩展的宏)


您可以使用stringify操作符(
)进行宏扩展以生成字符串文字。但这是另一回事。

现在添加一个关键元素,相邻的字符串文本被连接起来,这是一个答案。如果你不想依赖连接功能,你可以尝试:
STRINGIFY(我有数字a)
(我不确定结尾的点)。注意包装扩展的额外间接性,这是必需的。