【发布时间】:2018-05-08 12:01:38
【问题描述】:
我对 c 中的预处理行为有点困惑。
#include <stdio.h>
#define myMacro anotherMacro
#define anotherMacro 6
int main()
{
int dummy = myMacro;
printf("dummy = %d", dummy);
return 0;
}
在上面的代码 sn-p 中,结果为 6。然而,初始过程中的宏扩展会将“myMacro”替换为“anotherMacro”。 这意味着预处理器将进行第二次传递以将“anotherMacro”解析为值 6。
【问题讨论】:
-
这并不意味着第二遍。在解析
#defines时,它确实意味着一个循环直到关闭。
标签: c compilation compiler-warnings preprocessor clang++