【发布时间】:2012-08-27 06:12:44
【问题描述】:
我目前在我的 C++ 项目中同时使用 Visual Sstudio 2010 和 Eclipse+MinGW。我经历过不同的编译器行为,需要您的解释。下面是一个例子:
假设我有a.h 和a.cpp。而且我已经预编译了头文件(即,VS 中的 stdafx.h 和 Eclipse 中的 precomp.h(我为 Eclipse 创建了一个))。我将在预编译的头文件中包含一些基本的头文件(例如,opencv 中的 core.hpp)。在a.h 和a.cpp 中,我将使用一些在预编译头文件中包含的基本头文件中声明的类(例如,opencv 中的Mat)。
对于 Visual Studio 2010,我必须将 stdafx.h 放入每个 .cpp 文件中(如在 link 中)。所以在a.cpp,我一开始就有这个:
#include "stdafx.h"
#include "a.h"
此外,我不在a.h 中包含stdafx.h。我期待编译器找不到基本头文件中声明的类的错误,但事实证明在VS下编译很好。完全没有错误。
对于 Eclipse+MinGW,我这样做:在a.h 中,我将#include "precomp.h" 放在开头。而在 a.cpp 中,我只放了#include "a.h"(正如一些朋友所说,这是包含头文件的 C++ 标准方式)。编译后,这是没有错误的,这是毫无疑问的。但是,如果我像在 Visual Studio 中那样做,即我不在a.h 中包含precomp.h。会有错误,说明有些类没有在这个范围内声明。 As concerned by @MSalters, I should **highlight** that both a.h and a.cpp contain proper declarations and definitions.
所以任何人都可以帮助向我解释 VS 和 Eclipse+MinGW 的不同行为吗?非常感谢。
【问题讨论】:
标签: c++ visual-studio-2010 mingw