我对c中预处理的行为有点困惑。
#include <stdio.h>
#define myMacro anotherMacro
#define anotherMacro 6
int main()
{
int dummy = myMacro;
printf("dummy = %d", dummy);
return 0;
}
在上面的代码片段中,结果将是 6. 但是初始传递中的宏扩展将用"otherMacro"替换"myMacro"。 这意味着预处理器将进行第二次传递以将"otherMacro"解析为值 6。
预处理器将进行第二次传递。他逐行处理源文件。
所以如果他达到第一个定义
#define myMacro anotherMacro
他将用字符串otherMacro替换所有出现的myMacro。
处理该行后,该文件将如下所示:
#include <stdio.h>
#define anotherMacro 6
int main()
{
int dummy = anotherMacro;
printf("dummy = %d", dummy);
return 0;
}
现在预处理器可以继续下一个 #define
,并将每隔一个宏替换为文本6