在字符串文字中展开宏

Ami*_*ine 18 c++ macros visual-c++ c++11

我想要做的是#define宏:

#define a(2)
Run Code Online (Sandbox Code Playgroud)

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

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

Sim*_*ple 25

#define STRINGIFY2(X) #X
#define STRINGIFY(X) STRINGIFY2(X)
#define A 2
Run Code Online (Sandbox Code Playgroud)

然后STRINGIFY(A)会给你"2".您可以将它们并排放置,将其与其他字符串文字连接起来.

"I have the number " STRINGIFY(A) "."给你"I have the number 2.".

  • 现在添加连接相邻字符串文字的关键元素,这是一个答案. (6认同)

650*_*502 6

不,您不能在字符串文字中进行宏扩展(即让预处理器在文字中查找要扩展的宏)。

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