如何理解宏定义不变

时间:2012-07-03 05:24:23

标签: c c-preprocessor

实际上我有一个连续宏的代码

我想知道的是他们如何真正处理代码,因为我想通过看下面的结果我真的很惊讶来编写我自己的预处理器

#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

但令人惊讶(对我来说)类型没有改变为什么会这样?任何人都可以详细解释我在预处理过程中宏是如何进行的

1 个答案:

答案 0 :(得分:4)

宏扩展一直持续到扩展完成,并且无法递归扩展宏。您定义的每个宏都会扩展为另一个宏,但在扩展变为递归时停止,这意味着类型保持不变。