hdrstop pragma

プリコンパイル ファイル名、およびコンパイル状態が保存される場所を、より細かく制御できます。

構文

#pragma hdrstop [ ( "filename" ) ]

解説

filename は、使用または作成する (/Yu/Yc のどちらが指定されているかに基づく) プリコンパイル済みヘッダー ファイルの名前です。 filename にパスの指定が含まれていない場合、プリコンパイル済みヘッダー ファイルはソース ファイルと同じディレクトリにあると想定されます。

/Yc でコンパイルするときに C ファイルまたは C++ ファイルに hdrstoppragma が含まれている場合、コンパイラは pragma の位置までのコンパイル状態を保存します。 pragma の後ろにあるコードのコンパイル状態は保存されません。

コンパイル状態が保存されるプリコンパイル済みヘッダー ファイルに名前を付けるには、filename を使用します。 hdrstopfilename の間にスペースを挿入してもかまいません。 hdrstoppragma で指定されるファイル名は文字列であり、C または C++ の文字列の制約を受けます。 具体的には、文字列を引用符で囲み、エスケープ文字 (円記号、\) を使用してディレクトリ名を指定する必要があります。 次に例を示します。

#pragma hdrstop( "c:\\projects\\include\\myinc.pch" )

プリコンパイル済みヘッダー ファイルの名前は、次の規則 (優先度順に表示) に従って決定されます。

  1. /Fp コンパイラ オプションの引数

  2. #pragma hdrstopfilename 引数

  3. .PCH 拡張子を持つソース ファイルのベース名

/Yc/Yu のオプションまたは hdrstoppragma でファイル名を指定しないと、ソース ファイルのベース名がプリコンパイル済みヘッダー ファイルのベース名として使用されます。

また、次のように、プリプロセス コマンドを使用してマクロ置換を実行することもできます。

#define INCLUDE_PATH "c:\\progra~1\\devstsu~1\\vc\\include\\"
#define PCH_FNAME "PROG.PCH"
.
.
.
#pragma hdrstop( INCLUDE_PATH PCH_FNAME )

hdrstoppragma を配置できる場所は、次の規則に従います。

  • すべてのデータ宣言、関数宣言、および定義の外にある必要があります。

  • ヘッダー ファイルにではなく、ソース ファイルに指定する必要があります。

#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 つのファイルがインクルードされ、インライン関数が定義された後に、hdrstoppragma が記述されています。 初めは、pragma のこの位置が不自然に見えるかもしれません。 ただし、手動プリコンパイル オプション /Yc および /Yuhdrstoppragma を使用すると、インライン コードであっても、ソース ファイル全体をプリコンパイルできることを考慮してください。 Microsoft コンパイラでは、データ宣言以外のプリコンパイルも実行できます。

関連項目

pragma ディレクティブと __pragma および _Pragma キーワード