当预处理器看到插槽 (a) "1" #a时会发生什么情况

What happens when the preprocessor sees SLOT(a) "1"#a

本文关键字:什么情况 处理器 预处理 插槽      更新时间:2023-10-16

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

#define <identifier> <replacement>

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

#define SLOT(a) "1"#a
void myValue(int value);
SLOT(myValue(int));

我理解#意味着取字符串字面值。因此,在宏之后,不是应该有

吗?
"1""myValue(int)"

…本质上是两个背靠背的字符串字面值。我猜预处理器自动连接两个字符串字面量背对背。这是真的吗?我在哪里可以找到关于这个事实的信息?

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

  1. #算子为stringizer算子。
  2. 两个字符串字面值一个接一个,由0或多个白色分隔空格字符被连接成单个字符串字面值。
相关文章: