gpt4 book ai didi

gcc - (奇怪?)GCC 预处理器行为

转载 作者:行者123 更新时间:2023-12-02 20:45:01 24 4
gpt4 key购买 nike

我想大多数使用过 C/C++ 的人都对预处理器的工作原理有一定的直觉(或多或少)。直到今天我也是这么认为的,但事实证明我的直觉是错误的。故事是这样的:

今天我尝试了一些东西,但我无法解释结果。首先考虑以下代码:

#define A B
#define B A

A
B

会发生什么?那么,使用 -E 标志编译后的结果是这样的:

A
B

好吧,也许不是任何人所期望的,但这是可以解释的。我猜想预处理器以某种方式发现存在一些问题,但什么也没做。

我尝试的下一件事是:

#define A B
#define B A C
#define C x

A
B

现在对我来说,无法解释的结果:

A x
B x

这是怎么发生的?我无法弄清楚这是如何发生的任何合理的方式。第一个命令(#define A B)无法执行,因为这样 A 就会被 B 替换,并且最终结果应该是相同的。但如果不是的话,那么“A x”就不可能发生!

我的问题:我错过了什么?显然我不知道预处理器的确切工作方式。您知道任何相关消息来源吗?

最佳答案

Self-Referential Macros解释说。扩展被深入应用,但一旦宏引用自身就会停止。

关于gcc - (奇怪?)GCC 预处理器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822183/

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