C 预处理多道次



我对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

相关内容

  • 没有找到相关文章

最新更新