gpt4 book ai didi

c - 预处理 token : '- -' vs. '--'

转载 作者:太空狗 更新时间:2023-10-29 15:31:20 26 4
gpt4 key购买 nike

为什么 (GCC) 预处理器在以下示例中创建两个标记 --B 而不是一个 --B?前者应该正确而后者不应该是什么逻辑?

#define A -B
-A

根据gcc -E输出:

- -B

毕竟,-- 是一个有效的运算符,因此理论上也是一个有效的标记。

这是特定于 GCC 预处理器还是遵循 C 标准?

最佳答案

预处理器处理标记,而不是字符串。没有 ## 的宏替换无法创建新标记,因此,如果预处理器输出到文本文件而不是直接进入编译器,预处理器会插入空格,以便输出的文本文件可以用作 C在不改变语义的情况下再次输入。

空格插入似乎不在标准中,但随后标准将预处理器描述为处理标记并将其输出提供给编译器,而不是文本文件。

关于c - 预处理 token : '- -' vs. '--',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com