/Yc および /Yu の一貫性規則
/Yc または /Yu を使って作成されたプリコンパイル済みヘッダーを使用する場合、コンパイラは、現在のコンパイル環境と .pch ファイル作成時の状態を比較します。 一貫したコンパイラ オプションやプラグマなどを指定して、現在のコンパイル環境が前のコンパイル環境と一致するようにしてください。 矛盾する箇所が検出されると、警告が出力されます。矛盾箇所の内容が示される場合もあります。 ただし、このような警告は単に矛盾点を示しているだけなので、必ずしも .pch ファイルに問題があるとは限りません。 以降のセクションでは、プリコンパイル済みヘッダーに対する一貫性の要件について説明します。
コンパイラ オプションの一貫性
次の表は、プリコンパイル済みヘッダーの使用時に矛盾が発生し、警告メッセージが出力される可能性のあるコンパイラ オプションをまとめたものです。
オプション |
名前 |
規則 |
---|---|---|
/D |
定数およびマクロの定義 |
プリコンパイル済みヘッダー作成時のコンパイルと現在のコンパイルで、同じであることが必要です。 定義されている定数の状態はチェックされませんが、ファイルが変更された定数の値に依存する場合、予測できない結果を生じることがあります。 |
/E、/EP |
プリプロセッサ出力を標準出力にコピー |
プリコンパイル済みヘッダーは、/E または /EP オプションでは動作しません。 |
/Fr、/FR |
Microsoft ソース ブラウザー情報を生成 |
/Fr または /FR オプションが /Yu オプションで有効になるには、プリコンパイル済みヘッダーの作成時にも有効であったことが必要です。 そのプリコンパイル済みヘッダーを使用する以降のコンパイルでも、ソース ブラウザー情報が生成されます。 ブラウザー情報は、単一の .sbr ファイルに格納され、CodeView 情報と同じ方法でほかのファイルから参照されます。 ソースブラウザー情報の場所は、上書きできません。 |
/GA、/GD、/GE、/Gw、/GW |
Windows プロトコル オプション |
プリコンパイル済みヘッダー作成時のコンパイルと現在のコンパイルで、同じであることが必要です。 このオプションが異なると、警告メッセージが出力されます。 |
/Zi |
詳細なデバッグ情報の生成 |
プリコンパイル済みヘッダーの作成時にこのオプションが有効だった場合、プリコンパイルを使用する以降のコンパイルでそのデバッグ情報を使用できます。 プリコンパイル済みヘッダーの作成時にこのオプションが有効ではなかった場合、プリコンパイルを使用する以降のコンパイルと /Zi オプションで警告メッセージが出力されます。 デバッグ情報は現在のオブジェクト ファイルに取り込まれ、プリコンパイル済みヘッダーに定義されたローカル シンボルをデバッガーで使用できなくなります。 |
注意
プリコンパイル済みヘッダー機能は、C および C++ のソース ファイル専用です。
インクルード パスの一貫性
/Yc で作成されるプリコンパイル済みヘッダーには、.pch ファイルの作成時に有効だったインクルード パスに関する情報は含まれません。 .pch ファイルを使用すると、現在のコンパイルで指定されたインクルード パスが必ず使用されます。
ソース ファイルの一貫性
プリコンパイル済みヘッダーを使用する場合、hdrstop プラグマより前に現れるすべてのプリプロセッサ ディレクティブ (プラグマを含む) が無視されます。 このようなプリプロセッサ ディレクティブで指定されるコンパイルは、プリコンパイル済みヘッダー ファイルの作成時に使用されたコンパイルと同じであることが必要です。
プラグマの一貫性
プリコンパイル済みヘッダーのコンパイル中に処理されるプラグマは、通常、プリコンパイル済みヘッダーを後で使用するファイルに反映されます。 次のプラグマは .pch ファイル内のコードだけに反映され、後で .pch ファイルを使用するコードには反映されません。
コメント |
page |
subtitle |
Linesize |
pagesize |
タイトル |
Message |
skip |
|
次のプラグマは、プリコンパイル済みヘッダーの一部として保持され、このヘッダー ファイルを使った以降のコンパイルに反映されます。
alloc_text |
機能性 |
optimize |
auto_inline |
inline_depth |
Pack |
check_pointer |
inline_recursion |
same_seg |
check_stack |
intrinsic |
警告 |
code_seg |
loop_opt |
|
data_seg |
native_caller |
|