現在、C++プロジェクトにVisualSstudio2010とEclipse+MinGWの両方を使用しています。私はさまざまなコンパイラの動作を経験しましたが、あなたの親切な説明が必要です。次に一例を示します。
私が持っているa.h
としましょうa.cpp
。そして、プリコンパイル済みヘッダーファイルがあります(つまり、stdafx.h
VSとprecomp.h
Eclipse(Eclipse用に作成しました))。プリコンパイル済みヘッダーファイルにいくつかの基本的なヘッダーファイルをインクルードします(たとえば、opencvのcore.hpp)。そして、との両方a.h
でa.cpp
、プリコンパイル済みヘッダーに含まれている基本的なヘッダーファイルで宣言されたいくつかのクラス(たとえば、opencvのMat)を使用します。
Visual Studio 2010の場合、すべての.cppファイルにstdafx.hを配置する必要があります(リンクのように)。だからa.cpp
、私は最初にこれを持っています:
#include "stdafx.h"
#include "a.h"
その上、私はに含まれていません。コンパイラが基本ヘッダーファイルで宣言されたクラスを見つけることができないというエラーを予期していましたが、VSではコンパイルは問題ないことがわかりました。エラーはまったくありません。stdafx.h
a.h
Eclipse + MinGWの場合、私は次のようにします。で、最初a.h
に置き#include "precomp.h"
ます。そして、a.cppには、私が入れただけです#include "a.h"
(一部の友人が言ったように、これはヘッダーファイルをインクルードするC ++の標準的な方法です)。コンパイル後、これは間違いではありません。ただし、Visual Studioで行ったのと同じように行う場合、つまり、に含めない場合。一部のクラスがこのスコープで宣言されていないことを示すエラーが発生します。precomp.h
a.h
As concerned by @MSalters, I should **highlight** that both a.h and a.cpp contain proper declarations and definitions.
それで、誰でもVSとEclipse + MinGWの違いの振る舞いを私に説明するのを手伝うことができますか?どうもありがとう。