预处理器存储的宏定义

Macro definition stored by preprocessor

以这种方式声明宏后,我不应该收到警告或错误消息吗:

#define c 123
#define a b
#define b c

代码运行完美 - 就像变量定义一样,宏定义是否存储在某处?

这很好,因为预处理器在扩展点之前不会对宏定义进行操作。这就是顺序无关紧要的原因:只要每个宏都有一个定义,当您的代码引用它时可以将其扩展到该定义,预处理器就会很高兴。这适用于依赖其他宏进行扩展的宏。

此行为的一个后果是宏声明的相对顺序不会改变最终结果。