如何在#ifdef语句中使用/避免#pragma

时间:2016-06-03 05:44:54

标签: c++ visual-studio

我有跨平台(Windows和Linux)使用的代码。在Windows中,代码使用预编译的头文件,因此我包含stdafx.h但在linux中我没有。所以我把它放在每个.cpp文件的顶部:

#ifdef WIN32
#include "stdafx.h"
#endif // WIN32  // compiler error here

这在linux上编译很好,但在Visual Studio 2013中我得到了编译器错误:

  

错误2错误C1020:意外#endif

我认为这是因为stdafx.h包含#pragma once宏。

我如何解决这个问题,是否有更好的方法使代码跨平台?

1 个答案:

答案 0 :(得分:2)

您遇到此错误,因为编译器完全忽略在预编译头之前写入的所有内容。你可以把所需的东西放在stdafx.h而不是条件包括预编译头。

另请参阅此链接https://connect.microsoft.com/VisualStudio/feedback/details/506745/visual-studio-2008-c-fatal-error-c1020-unexpected-endif