#pragma hdrstop
いくつかのソース (cpp) ファイルに (ファイル名パラメーターなしで) 入れることの実用的な価値 (「何をするか」) は何ですか?
MSDN ドキュメントは (もう一度) 泥のように明確であることに注意してください。
編集/注:この回答とリンク先の記事が推奨しているように見えるので、私はこれを求めています。しかし、コンパイル単位ごとに個別の pch ファイルを用意する利点がわかりません。
#pragma hdrstop
いくつかのソース (cpp) ファイルに (ファイル名パラメーターなしで) 入れることの実用的な価値 (「何をするか」) は何ですか?
MSDN ドキュメントは (もう一度) 泥のように明確であることに注意してください。
編集/注:この回答とリンク先の記事が推奨しているように見えるので、私はこれを求めています。しかし、コンパイル単位ごとに個別の pch ファイルを用意する利点がわかりません。
元の質問に対する答えは、/Yc も /Yu も設定されていないファイルに #pragma hdrstop を設定する目的は無視されるため、プリコンパイル済みヘッダーなしでビルドするビルド構成とビルドする他のビルド構成をセットアップできることです。 WITH プリコンパイル済みヘッダーであり、そのために含まれているコードやヘッダーを変更する必要はまったくありません。
もっと詳しく...
MSDN のメモには、「hdrstop プラグマを使用すると、コンパイル前のファイル名とコンパイル状態が保存される場所をさらに制御できます」と記載されています。それは本当ですが、それがどれほど役立つかは特に明らかではありません...
手短に。
秘訣は、オプションのヘッダー ファイル名なしで /Yc と /Yu を使用することです。'use' または 'create' ラジオ ボタンをチェックして、'through header' 編集ボックスを空白のままにします (またはプロジェクト ファイルを編集します...)。
したがって、おそらく PrecompiledHeader.cpp という名前のファイルが 1 つあります。このファイルには、プリコンパイル済みヘッダーにインクルードするヘッダーが含まれており、インクルード ファイルのリストの最後に #pragma hdrstop があります。この 1 つのファイルは、/Yc でコンパイルされます。
次に、プリコンパイル済みヘッダーにあるインクルード ファイルの後に #pragma hdrstop を使用して、他のすべての cpp ファイルを作成します。これらのファイルはすべて /Yu でコンパイルされます。
これにより、PrecompiledHeader.cpp が (この例では) 単一の pch ファイルと、その単一の pch ファイルを使用して他のすべてのファイルを構築します。
これを行う利点は、「グローバルな」プリコンパイル済みヘッダー ビルド ヘッダー ファイルをファイルに含める必要がないことです。つまり、stdafx.h などは必要ありません。これは、すべての #pragma hdrstop 行が単純に無視されるプリコンパイル済みヘッダーなしでビルドするビルド構成をセットアップできることを意味します。
これは、迅速に開発できる単一の「プリコンプなし」ビルド構成 (単一のヘッダーを変更して、世界を強制的に再構築することはできません) と、プリコンパイル済みを使用する他の「通常の」構成を持つことができることを意味するため、「良い」です。ヘッダー。
以前のすべてのコード#pragma hdrstop
は、プリコンパイル済みヘッダーの一部になります。filenameパラメータが指定されていない場合、ヘッダーの名前は、ドキュメントに記載されているように、拡張子が.PCHのソースファイルのベース名になります。
プリコンパイル済みヘッダーファイルの名前は、次の規則に従って優先順位に従って決定されます。
/Fpコンパイラオプションの引数
#pragmahdrstopへのfilename引数
拡張子が.PCHのソースファイルのベース名
したがって、という名前のファイルにそれがある場合は、IFFblah.cpp
という名前のファイルが生成されます(1つのファイルのみを設定する必要があります)。blah.pch
/Yc
C/C++ プロジェクトで使用#pragma hdrstop
しない場合は、作成された .pch のソース ファイルとして専用の .cpp ファイルを用意してください。
#pragma hdrstop
.pch ファイルを作成したい .cpp ファイルで使用する場合、.cpp ファイルは の行の後に他の有用なコンテンツを持つことができます#pragma hdrstop
。最初にこの .cpp ファイルを /Yc コンパイル オプションでコンパイルすると、.pch ファイルと .obj ファイルが得られます。.cpp ファイルを変更して /Yu コンパイル オプションで再コンパイルすると、コンパイラは の行の前の内容#pragma hdrstop
を .pch ファイルに置き換え、 の行の後の部分を再コンパイルして#pragma hdrstop
、新しい .obj ファイルを作成し、コンパイル時間を節約します。プロジェクトのソース ファイルが 1 つだけであることは非常に便利です。
プリコンパイル ヘッド ファイルのみを使用するソース ファイルの場合#pragma hdrstop
、.pch ファイルに置き換える必要があるコンパイラの目印となるため、/Yu コンパイル オプションでヘッダー ファイル名を指定する必要はありません。