为什么我无法#ifdef stdafx.h?
我试图在 .cpp 文件中包含 2 个特定于平台的 stdafx.h 文件,但当我尝试 #ifdef 时,编译器不满意。
#ifdef _WIN32
#include "stdafx.h"
#elif _MAC
#include "MAC/stdafx.h"
#endif
您可能想知道为什么我在 Mac 代码中使用 stdafx.h,但这目前并不重要:)。
当我尝试在 Windows 上编译代码时,我收到:致命错误 C1018。我尝试在同一个文件中使用 #ifdef 包含其他头文件,编译器很高兴。因此,看起来Windows不喜欢stdafx.h被#ifdef-ed,或者Windows只允许#include stdafx.h 成为文件中的第一行。
所以我的问题是,为什么?
吉
I am trying to include 2 platform-specific stdafx.h files in my .cpp file, but the compiler is unhappy when I try to #ifdef it.
#ifdef _WIN32
#include "stdafx.h"
#elif _MAC
#include "MAC/stdafx.h"
#endif
You may wonder why I am using stdafx.h in the Mac code, but that is not important at the moment :).
When I try to compile the code on Windows, I receive: Fatal Error C1018. I tried enclosing other header files with #ifdef in the same file, and the compiler was happy. Therefore, it looks like Windows doesn't like stdafx.h to be #ifdef-ed, or that Windows only allows #include stdafx.h
to be the first line in the file.
So my question is, why?
Kat
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当编译器包含预编译标头时,它基本上会“忘记”标头之前的任何内容。因此您的 #elif 不再与 #if 匹配。
When the compiler includes a pre-compiled header, it basically "forgets" anything that came before the header. Thus your #elif isn't matched to a #if anymore.
这是因为您打开了预编译头 - 将其关闭就可以了。
This is because you have Precompiled Headers turned on - turn it off and you should be fine.