我有跨平台(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
宏。
我如何解决这个问题,是否有更好的方法使代码跨平台?
答案 0 :(得分:2)
您遇到此错误,因为编译器完全忽略在预编译头之前写入的所有内容。你可以把所需的东西放在stdafx.h而不是条件包括预编译头。