我的理解是预处理器 #define
将 identifier 替换为 replacement
#define <identifier> <replacement>
假设我们有以下内容:
#define SLOT(a) "1"#a
void myValue(int value);
SLOT(myValue(int));
我明白 #
的意思是获取字符串文字。那么,在宏之后,我们岂不是有
"1""myValue(int)"
...本质上是两个背对背的字符串文字。我猜预处理器会自动将两个字符串文字背靠背连接起来。这是真的?我在哪里可以找到有关此事实的信息?
最佳答案
是的,你的理解是正确的。
#
运算符是字符串运算符。- 两个字符串字面量相继被0个或多个白色隔开 空格字符连接成单个字符串文字。
关于c++ - 当预处理器看到 SLOT(a) "1"#a 时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23589175/