当预处理器看到SLOT(a)" 1" #a时会发生什么

时间:2014-05-11 05:12:59

标签: c++ c-preprocessor stringification

我的理解是预处理器#define替换替换标识符

#define <identifier> <replacement>

我们假设我们有以下内容:

#define SLOT(a) "1"#a

void myValue(int value);
SLOT(myValue(int));

我了解#表示取字符串文字。因此,在宏观之后,我们不会

"1""myValue(int)"

...基本上是两个字符串文字背靠背。我猜测预处理器会自动连接两个字符串文字。这是真的?我在哪里可以找到有关这一事实的信息?

1 个答案:

答案 0 :(得分:2)

是的,你的理解是正确的。

  1. #运算符是字符串运算符。
  2. 两个字符串文字一个接一个地用0或更多白色分隔 空格字符连接成单个字符串文字。