伙计我在VS中尝试做类似的事情:
#ifdef _MSC_VER
#include "stdafx.h"
#endif
但是我收到一个错误告诉我:
C1020: unexpected #endif
这样做的正确方法是什么?
编辑
/ 这是stdafx.h的内容 /
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
//#include <stdio.h>
//#include <tchar.h>
#include <iostream>
using std::cout;
using std::cerr;
// TODO: reference additional headers your program requires here
答案 0 :(得分:9)
由于MSVC预编译头的工作方式,你不能在stdafx.h周围放置条件。一旦找到stdafx.h(并且通常需要#include "stdafx.h"
成为文件中的第一行),它基本上会替换所有内容,并且预编译的头内容,所以就好像你从未写过#if _MSC_VER
并且有额外的#endif
。
两种解决方案:
1)不要在项目中使用预编译头。你仍然可以使用stdafx.h来包含你需要的所有头文件,但编译速度很慢。
2)将条件编译放在stdafx.h文件中。
(取自here)