如何检查MS编译器是否会编译我的源代码

时间:2011-11-16 13:24:44

标签: c++

伙计我在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

1 个答案:

答案 0 :(得分:9)

由于MSVC预编译头的工作方式,你不能在stdafx.h周围放置条件。一旦找到stdafx.h(并且通常需要#include "stdafx.h"成为文件中的第一行),它基本上会替换所有内容,并且预编译的头内容,所以就好像你从未写过#if _MSC_VER并且有额外的#endif

两种解决方案:

1)不要在项目中使用预编译头。你仍然可以使用stdafx.h来包含你需要的所有头文件,但编译速度很慢。

2)将条件编译放在stdafx.h文件中。

(取自here