为什么我不能#ifdef stdafx.h?

时间:2009-09-16 22:18:36

标签: conditional-compilation 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 成为文件中的第一行。

所以我的问题是,为什么?

2 个答案:

答案 0 :(得分:10)

当编译器包含预编译的头时,它基本上“忘记”标头之前的任何内容。因此,#elif不再与#if匹配。

答案 1 :(得分:6)

这是因为您打开了预编译标题 - 关闭它并且您应该没问题。

相关问题