实际上我有一个连续宏的代码
我想知道的是他们如何真正处理代码,因为我想通过看下面的结果我真的很惊讶来编写我自己的预处理器
#define int char //macro1
#define char float //macro2
#define float int //macro3
main()
{
int x;
char y;
float z;
}
我预期在预处理后代码在文件中的所有三个变量x,y,z为int,int,int
但令人惊讶(对我来说)类型没有改变为什么会这样?任何人都可以详细解释我在预处理过程中宏是如何进行的
答案 0 :(得分:4)
宏扩展一直持续到扩展完成,并且无法递归扩展宏。您定义的每个宏都会扩展为另一个宏,但在扩展变为递归时停止,这意味着类型保持不变。