5

ヘッダー(ah)をstdafx.hに配置し、そのヘッダーにstdafx.hに記載されていない別のヘッダー(bh)が含まれている場合、誰かがahを含めるたびにbhにアクセスしますか、それともahの一部としてコンパイルされますか?ahにコンパイルされた場合、誰かがbhを直接インクルードするとどうなりますか?これはプリコンパイルされますか?

この質問をする動機は、作業しているソフトウェアのstdafx.hファイルのコンテンツを最適化しようとしていることです。再構築時間と増分構築時間の両方が私たちにとって重要です。すべての.cppファイルで#includeディレクティブを検索し、各ファイルがインクルードされた回数を数えることができるかどうか疑問に思いました。含まれていることが多いファイルは、stdafx.hファイルの候補として適している可能性があります。もちろん、含まれているファイルだけでなく、含まれているファイルに含まれているファイルも考慮する必要がある場合、この戦略は完全に偽物です。

重要かどうかはわかりませんが、VisualStudio2005を使用しています。

4

1 に答える 1

4

ahとbhはプリコンパイル済みヘッダーの一部であり、後で含める必要はありません。必要なのは、ahまたはbhが必要な場所にstdafx.hを含めることだけです。stdafx.hの後にahまたはbhを明示的にインクルードする場合(stdafx.hインクルードの前のすべてのコードは無視されます)、2回目はコンパイルされません(通常、#pragma onceディレクティブまたは定義によって保護されているため)が、コンパイラーはあなたがそれについて尋ねているならば、ハードディスク上でそのファイルを開いてください、

ちなみに、いくつかのプリコンパイル済みヘッダーファイルを使用できることを知っておく必要があります(ただし、すべてのcppファイルに1つしか使用できません)。

于 2009-08-24T20:28:04.810 に答える