Visual C++ 6 のサンプル プロジェクト (私のものではありません) があります。これを Visual Studio 2008 に変換しようとしています。
古いプロジェクトでは、プリコンパイル済みヘッダーを使用しています。ここでの質問は次のとおりです。
プリコンパイル済みヘッダーとは何ですか?
古いプロジェクトではプリコンパイル済みヘッダーを使用しているため、Visual Studio 2008(新しいプロジェクト)でもプリコンパイル済みヘッダーを使用します。しかし、次のようなエラーが表示されます。「stdafx.h をインクルードするのを忘れましたか?」問題を解決するために、すべてのソース ファイルに「stdafx.h」を含めました。これで完璧に機能しました。しかし、以前のプロジェクトではすべてのファイルに「stdafx.h」が含まれていませんでした。では、各ソース ファイルに「stdafx.h」を含めないようにするにはどうすればよいでしょうか。すべてのソース ファイルが「stdafx.h」で定義されたインクルード ファイルを必要とするわけではなく、必要なのはごくわずかです。これはどのように行うのでしょうか。
プリコンパイル済みヘッダー* の使用から一部のファイルを除外するにはどうすればよいですか?
ベストアンサー1
プリコンパイル済みヘッダーとは何ですか?
多くの場合、C++ ソース ファイルには外部ライブラリのヘッダーが含まれます。Windows では、 をインクルードしますwindows.h
。これらのヘッダー ファイルは非常に大きくなる可能性があり、処理に時間がかかります。C++ ファイルをコンパイルするたびに、コンパイラはこれらのヘッダー ファイルから数千行を読み取って処理する必要があります。ただし、外部ライブラリは変更されないため、これらのファイルを 1 回だけ処理して結果を保存すると、多くの時間を節約できます。
プリコンパイル済みヘッダーは、後でコンパイラによって何度も使用できる中間形式に処理された一連のヘッダー ファイルです。
Visual C++ のプリコンパイル済みヘッダー
#include
Visual C++ では、変更されないすべてのヘッダー ファイルをにするのが慣例ですstdafx.h
。次に、stdafx.pch
コンパイル中に をインクルードする以外stdafx.cpp
は何も行わないプリコンパイル済みヘッダーを作成するようにコンパイラに指示しますstdafx.h
。プリコンパイル済みヘッダーを別のファイルで使用する場合は、を最初のインクルード ファイルとしてインクルードし、 をプリコンパイル済みヘッダーに使用するようにコンパイラに指示する必要が.cpp
あります。stdafx.h
stdafx.pch
インクルードしていないことに関するエラーが発生した場合は、stdafx.h
その特定のソース ファイルに対してプリコンパイル済みヘッダーを使用しないようにコンパイラに指示するだけです。(または、インクルードすることもできますstdafx.h
。)
個々のソースファイルのプリコンパイル済みヘッダー設定
Visual C++では、プロジェクト全体と個々のファイルのコンパイラ設定を制御できます。個々のプロパティにアクセスするには、ソリューションエクスプローラーでソースファイルを選択し、右クリックしてプロパティコンテキストメニューから選択します。プリコンパイル済みヘッダーのオプションは、構成プロパティ=>C++ の=>プリコンパイル済みヘッダーこれらの設定を変更する場合は、多くの場合、すべての構成に対して変更する必要があります(例:デバッグそしてリリース)。
プリコンパイル済みヘッダーを使用する場合、プロジェクト全体に対して、プリstdafx.pch
コンパイル済みヘッダーに使用するようコンパイラに指示する設定があります。 には、stdafx.cpp
コンパイラに を生成するよう指示する個別の設定がありstdafx.pch
、 が含まれていないソース ファイルがある場合は、stdafx.h
プリコンパイル済みヘッダーを使用しないようにこれらのファイルを個別に設定できます。