我有以下文件:
MAIN.C
#include "Header.h"
#define SECRET_NUMBER_ENABLED
int main()
{
printf("Secret number = %d\n", SECRET_NUMBER);
return 0;
}
Header.h
#ifdef SECRET_NUMBER_ENABLED
#define SECRET_NUMBER 111
#else
#define SECRET_NUMBER 222
#endif
打印结果为:222
据我了解,预处理器应扫描Main.c并将每个SECRET_NUMBER替换为Header.h中定义的编号,
因为在Main.c中定义了SECRET_NUMBER_ENABLED,所以预处理器应该采用111定义而不是222.
显然我错了,但我不知道为什么,也不知道如何正确设置,所以只有#define SECRET_NUMBER_ENABLED的C文件才会使用SECRET_NUMBER 111
答案 0 :(得分:0)
包括" stdafx.h"之前的任何事情;假定已经定义了。
见Why stdfax.h should be the first include on MFC applications?
因此任何早期的定义都会丢失。
这就是你需要定义宏
的原因