hdrstop
pragma
プリコンパイル ファイル名、およびコンパイル状態が保存される場所を、より細かく制御できます。
構文
#pragma hdrstop
[ ( "filename" ) ]
解説
filename は、使用または作成する (/Yu
と /Yc
のどちらが指定されているかに基づく) プリコンパイル済みヘッダー ファイルの名前です。 filename にパスの指定が含まれていない場合、プリコンパイル済みヘッダー ファイルはソース ファイルと同じディレクトリにあると想定されます。
/Yc
でコンパイルするときに C ファイルまたは C++ ファイルに hdrstop
pragma が含まれている場合、コンパイラは pragma の位置までのコンパイル状態を保存します。 pragma の後ろにあるコードのコンパイル状態は保存されません。
コンパイル状態が保存されるプリコンパイル済みヘッダー ファイルに名前を付けるには、filename を使用します。 hdrstop
と filename の間にスペースを挿入してもかまいません。 hdrstop
pragma で指定されるファイル名は文字列であり、C または C++ の文字列の制約を受けます。 具体的には、文字列を引用符で囲み、エスケープ文字 (円記号、\
) を使用してディレクトリ名を指定する必要があります。 次に例を示します。
#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )
プリコンパイル済みヘッダー ファイルの名前は、次の規則 (優先度順に表示) に従って決定されます。
/Fp
コンパイラ オプションの引数#pragma hdrstop
の filename 引数.PCH 拡張子を持つソース ファイルのベース名
/Yc
と /Yu
のオプションまたは hdrstop
pragma でファイル名を指定しないと、ソース ファイルのベース名がプリコンパイル済みヘッダー ファイルのベース名として使用されます。
また、次のように、プリプロセス コマンドを使用してマクロ置換を実行することもできます。
#define INCLUDE_PATH "c:\\progra~1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )
hdrstop
pragma を配置できる場所は、次の規則に従います。
すべてのデータ宣言、関数宣言、および定義の外にある必要があります。
ヘッダー ファイルにではなく、ソース ファイルに指定する必要があります。
例
#include <windows.h> // Include several files
#include "myhdr.h"
__inline Disp( char *szToDisplay ) // Define an inline function
{
// ... // Some code to display string
}
#pragma hdrstop
この例では、2 つのファイルがインクルードされ、インライン関数が定義された後に、hdrstop
pragma が記述されています。 初めは、pragma のこの位置が不自然に見えるかもしれません。 ただし、手動プリコンパイル オプション /Yc
および /Yu
で hdrstop
pragma を使用すると、インライン コードであっても、ソース ファイル全体をプリコンパイルできることを考慮してください。 Microsoft コンパイラでは、データ宣言以外のプリコンパイルも実行できます。