2011-02-07 7 views
1

コンパイルを高速化するためにプリコンパイルされたヘッダが使用されていますが、はありますか?はどのファイルに含めるべきですか?たとえば、多くのブーストライブラリを使用するプロジェクトがあるので、ブーストヘッダファイルをstdafx.h(私はVS2008を使用しています)に含めてください。すべての標準ヘッダファイルもそれらに含めるべきですか?例えば、<vector>を含めても、実行可能なサイズを増やしますが、std::vectorは使用しませんか?自分のプロジェクトのヘッダーファイルをstdafx.hにインクルードするのは悪い考えですか?プリコンパイルされたヘッダー:やりとりしないでください?

答えて

3

事前コンパイル済みヘッダーは、実行可能ファイルのサイズには影響せず、コンパイル速度にのみ影響します。それらはあらかじめコンパイルされているので、いつも再コンパイルする必要はありません。 Windows.hはこの機能の主要なベンチャーです。

4

一般に、アプリケーション全体で使用し、頻繁に変更されないすべてのヘッダーファイルは、プリコンパイル済みヘッダーファイルに移動する必要があります。プリコンパイルされたヘッダーファイルがコンパイルされるため、コンパイルが高速になります。

頻繁に変更されるヘッダーファイルを追加すると、あまり変更されないヘッダーファイルがプロジェクト全体を不必要に再コンパイルする可能性があるため、プリコンパイル済みヘッダーファイルのポイントが見付かりません。

具体的には、テンプレートクラスを定義するので、std :: vectorを使用しない場合、オーバーヘッドは大きくなりません。しかし、本当に必要ない場合は、ヘッダファイルを追加することを控えることをお勧めします。コンパイル時にはバイナリサイズのオーバーヘッドがあり、プロジェクトの後半で競合が発生する可能性があります。なぜ、本当に必要ない場合は、何かを追加するのですか?

0

C++の標準ヘッダーファイル、ブーストライブラリヘッダー、および頻繁に使用するサードパーティのライブラリのヘッダーを含めることをお勧めします。これは、実行可能ファイルのサイズには影響しません。

ただし、これらのヘッダーを変更するたびにプロジェクト全体を再構築する必要があるため、自分のプロジェクトのヘッダーは含めないでください。

関連する問題