0

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

我在这里想知道的是它们是如何在代码上真正工作的,因为我想通过看到下面的结果来编写自己的预处理器,我真的很惊讶

#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

但令人惊讶的是(对我来说)类型没有改变,为什么会这样?谁能详细解释一下宏在预处理过程中是如何发挥作用的

4

1 回答 1

4

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

于 2012-07-03T05:30:04.873 回答