当预处理器看到插槽 (a) "1" #a时会发生什么情况
What happens when the preprocessor sees SLOT(a) "1"#a
我的理解是预处理器#define
将标识符替换为
#define <identifier> <replacement>
让我们假设我们有以下内容:
#define SLOT(a) "1"#a
void myValue(int value);
SLOT(myValue(int));
我理解#
意味着取字符串字面值。因此,在宏之后,不是应该有
"1""myValue(int)"
…本质上是两个背靠背的字符串字面值。我猜预处理器自动连接两个字符串字面量背对背。这是真的吗?我在哪里可以找到关于这个事实的信息?
是的,你的理解是正确的。
-
#
算子为stringizer算子。 - 两个字符串字面值一个接一个,由0或多个白色分隔空格字符被连接成单个字符串字面值。
相关文章:
- 将指针分配给另一个指针时会发生什么情况?
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- 发生注入类名时会发生什么情况?(C++)
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 重新分配向量时,向量中的内存会发生什么情况
- 如果结构中的字符串比使用的 p/调用签名长或短,会发生什么情况?
- 为什么或在什么情况下,你会将参数作为C++中的引用(或指针)传递给函数?
- 如果我向一个12字节的缓冲区写入的字节数少于12,会发生什么情况
- 删除对象(具有不同类型)的引用时会发生什么情况?
- 如果我在 c++ 中以 new 的放置形式使用没有足够的内存,会发生什么情况?
- 使用 Google 基准测试时返回值会发生什么情况?
- 正在连接的等待条件变量的线程会发生什么情况?
- 如果未定义的C++行为符合 C 定义的行为,会发生什么情况?
- 在什么情况下,使用'const T*'输入参数比'const T&'更可取?
- 如果字符串在 C/C++ 中没有 NUL 字符(以防编译器允许它通过)会发生什么情况?
- 将虚拟方法定义为私有方法时会发生什么情况?
- 如果我将"reference to vector"分配给"vector"会发生什么情况
- 初始化原子指针是原子的吗?如果初始化或内存分配引发,会发生什么情况?
- 当预处理器看到插槽 (a) "1" #a时会发生什么情况