【发布时间】:2014-05-11 05:12:59
【问题描述】:
我的理解是预处理器#define将identifier替换为replacement
#define <identifier> <replacement>
假设我们有以下内容:
#define SLOT(a) "1"#a
void myValue(int value);
SLOT(myValue(int));
我知道# 的意思是获取字符串字面量。因此,在宏之后,我们不会有
"1""myValue(int)"
...本质上是两个背靠背的字符串文字。我猜预处理器会自动将两个字符串文字背靠背连接起来。这是真的?我在哪里可以找到有关此事实的信息?
【问题讨论】:
-
C++ 11 标准中涵盖了字符串文字连接,特别是第 2.14.5 节 [lex.string] 第 13 段。您可以在其中阅读更多相关信息(以及更多关于字符串文字的信息)部分。
标签: c++ c-preprocessor stringification