プリコンパイル済みヘッダー 質問する

プリコンパイル済みヘッダー 質問する

Visual C++ 6 のサンプル プロジェクト (私のものではありません) があります。これを Visual Studio 2008 に変換しようとしています。

古いプロジェクトでは、プリコンパイル済みヘッダーを使用しています。ここでの質問は次のとおりです。

  1. プリコンパイル済みヘッダーとは何ですか?

  2. 古いプロジェクトではプリコンパイル済みヘッダーを使用しているため、Visual Studio 2008(新しいプロジェクト)でもプリコンパイル済みヘッダーを使用します。しかし、次のようなエラーが表示されます。「stdafx.h をインクルードするのを忘れましたか?」問題を解決するために、すべてのソース ファイルに「stdafx.h」を含めました。これで完璧に機能しました。しかし、以前のプロジェクトではすべてのファイルに「stdafx.h」が含まれていませんでした。では、各ソース ファイルに「stdafx.h」を含めないようにするにはどうすればよいでしょうか。すべてのソース ファイルが「stdafx.h」で定義されたインクルード ファイルを必要とするわけではなく、必要なのはごくわずかです。これはどのように行うのでしょうか。

プリコンパイル済みヘッダー* の使用から一部のファイルを除外するにはどうすればよいですか?

ベストアンサー1

プリコンパイル済みヘッダーとは何ですか?

多くの場合、C++ ソース ファイルには外部ライブラリのヘッダーが含まれます。Windows では、 をインクルードしますwindows.h。これらのヘッダー ファイルは非常に大きくなる可能性があり、処理に時間がかかります。C++ ファイルをコンパイルするたびに、コンパイラはこれらのヘッダー ファイルから数千行を読み取って処理する必要があります。ただし、外部ライブラリは変更されないため、これらのファイルを 1 回だけ処理して結果を保存すると、多くの時間を節約できます。

プリコンパイル済みヘッダーは、後でコンパイラによって何度も使用できる中間形式に処理された一連のヘッダー ファイルです。

Visual C++ のプリコンパイル済みヘッダー

#includeVisual C++ では、変更されないすべてのヘッダー ファイルをにするのが慣例ですstdafx.h。次に、stdafx.pchコンパイル中に をインクルードする以外stdafx.cppは何も行わないプリコンパイル済みヘッダーを作成するようにコンパイラに指示しますstdafx.h。プリコンパイル済みヘッダーを別のファイルで使用する場合は、を最初のインクルード ファイルとしてインクルードし、 をプリコンパイル済みヘッダーに使用するようにコンパイラに指示する必要が.cppあります。stdafx.hstdafx.pch

インクルードしていないことに関するエラーが発生した場合は、stdafx.hその特定のソース ファイルに対してプリコンパイル済みヘッダーを使用しないようにコンパイラに指示するだけです。(または、インクルードすることもできますstdafx.h。)

個々のソースファイルのプリコンパイル済みヘッダー設定

Visual C++では、プロジェクト全体と個々のファイルのコンパイラ設定を制御できます。個々のプロパティにアクセスするには、ソリューションエクスプローラーでソースファイルを選択し、右クリックしてプロパティコンテキストメニューから選択します。プリコンパイル済みヘッダーのオプションは、構成プロパティ=>C++ の=>プリコンパイル済みヘッダーこれらの設定を変更する場合は、多くの場合、すべての構成に対して変更する必要があります(例:デバッグそしてリリース)。

プリコンパイル済みヘッダーを使用する場合、プロジェクト全体に対して、プリstdafx.pchコンパイル済みヘッダーに使用するようコンパイラに指示する設定があります。 には、stdafx.cppコンパイラに を生成するよう指示する個別の設定がありstdafx.pch、 が含まれていないソース ファイルがある場合は、stdafx.hプリコンパイル済みヘッダーを使用しないようにこれらのファイルを個別に設定できます。

おすすめ記事