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