コンパイラがソース(eg)ファイルをコンパイル*.cppすると、オブジェクトファイル(eg *.o)が作成されるため、後で他のファイル(Windowsの場合はファイル)にリンクされ.o、.so実行.lib可能ファイルが構成されます。
ここで、いくつかの.pchファイルを作成するたびにヘッダーファイルをコンパイルしないという類推的な状況で、リンカーによってリンクされます。
ここで、Visula Studioプロジェクトのスコープ内でプリコンパイル済みヘッダーが定義されている場合、Visual Studio**fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?**がヘッダーファイルが.cppファイルに含まれていないというエラー(例)で文句を言うのはなぜですか。
要約すると、ここに私の質問があります:
- 各.cppファイルにプロジェクトのプリコンパイル済みヘッダーが必要なのはなぜですか?
- 各コンパイルユニットにプリコンパイル済みヘッダーが存在するという要件は、コンパイルプロセスをどのように最適化しますか?言い換えれば、この要件の利点は何ですか?(どこに含めるか、どこに含めないかはユーザー次第です!)
- プリコンパイル済みヘッダーが.pchファイルの2%のみを使用する.cppファイルに含まれている場合、残りの98%は対応する.oファイルに追加されますか?