PCH ファイルには、ヘッダストップポイントよりも前のすべてのコードのスナップショットが含まれます。通常、ヘッダストップポイントは、プリプロセッシングディレクティブに属さない、元のソースファイル内の最初のトークンとなります。以下の例では、ヘッダストップポイントは int
であり、PCH
ファイルには xxx.h
および yyy.h
のインクルードが反映されたスナップショットが保持されます。
#include "xxx.h" #include "yyy.h" int i;
ヘッダストップポイントは、#pragma hdrstop
を使用して手動で指定できます。このプラグマを使用する場合は、プリプロセッシングディレクティブに属さない最初のトークンの前に配置する必要があります。この例では、以下のように int
の前に配置する必要があります。
#include "xxx.h" #include "yyy.h" #pragma hdrstop int i;
最初の非プリプロセッサトークンまたは #pragma hdrstop
が #if
ブロック内に出現する場合、ヘッダストップポイントは #if
の開始位置となります。以下に例を示します。
#include "xxx.h" #ifndef YYY_H #define YYY_H 1 #include "yyy.h" #endif #if TEST /* #if TEST の直前にヘッダストップポイントを配置する */ int i; #endif
この例では、プリプロセッシングディレクティブに属さない最初のトークンは int
ですが、ヘッダストップポイントは、それを含む #if
ブロックの開始位置となります。この
PCH ファイルには、xxx.h
のインクルードと、条件付きで YYY_H
の定義と yyy.h
のインクルードが反映されます。ただし、#if
TEST
によって生成される状態は保持されません。