/Yu (プリコンパイル済みヘッダー ファイルの使用)
更新 : 2007 年 11 月
現在のコンパイルに既存のプリコンパイル済みヘッダー (.pch) を使用します。
/Yu[filename]
引数
- filename
ヘッダー ファイルの名前。このヘッダー ファイルは、#include プリプロセッサ ディレクティブによってソース ファイルに取り込まれます。
解説
インクルード ファイルの名前は、プリコンパイル済みヘッダーを作成する /Yc オプションと、そのプリコンパイル済みヘッダーの使用を指示する以降の /Yu オプションで同じにする必要があります。
/Yc では、引数 filename はプリコンパイルの停止位置を指定します。つまり、名前が filename のファイルまでのすべてのコードがプリコンパイルされます。生成されるプリコンパイル済みヘッダーの名前には、インクルード ファイルの基本名と拡張子 .pch が付きます。
.pch ファイルは /Yc を使用して作成されている必要があります。
ここで指定した .h ファイルまでのコードは、すべてプリコンパイル済みと見なされます。したがって、その .h ファイルの #include ディレクティブまでのコードはコンパイルされず、.pch ファイルのコードが代わりに使用されます。filename 以降のすべてのコードをコンパイルします。
コマンド ラインで、/Yu と filename の間には空白を挿入しないでください。
/Yu オプションでファイル名を指定しない場合は、ソース プログラムにプリコンパイル済みヘッダー (.pch) ファイル名を指定する #pragma hdrstop が必要です。この場合、コンパイラは /Fp (.pch ファイルの名前の指定) で指定されたプリコンパイル済みヘッダー (.pch) ファイルを使用します。コンパイラは、このプラグマの位置までスキップし、このプラグマで指定するプリコンパイル済みヘッダー ファイルからコンパイル状態を復元します。その後、このプラグマの後ろにあるコードだけをコンパイルします。#pragma hdrstop でファイル名を指定しないと、コンパイラはソース ファイルと同じ基本名で拡張子が .pch のファイルを探します。また、/Fp オプションを使用して、別の .pch ファイルを指定することもできます。
/Yu オプションにファイル名を指定せず、hdrstop プラグマも指定していないと、エラー メッセージが出力されてコンパイルが失敗します。
/Ycfilename オプションと /Yufilename オプションが 1 つのコマンド ラインに指定され、その両方が同じファイル名を参照する場合は、/Ycfilename が優先され、引数で指定した名前のファイルまでのすべてのコードがプリコンパイルされます。したがって、メイクファイルの作成が簡単になります。
.pch ファイルには、プログラムのメモリ アドレス情報に加えマシン環境に関する情報も含まれているため、pch ファイルはその作成先のマシンでのみ使用してください。
プリコンパイル済みヘッダーの詳細については、以下のトピックを参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの .cpp ファイルに /Yc (プリコンパイル済みヘッダー ファイルの作成) を指定します。
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダをクリックします。
[プリコンパイル済みヘッダー] プロパティ ページをクリックします。
[ファイルを使用して PCH を作成/使用] プロパティまたは [プリコンパイル済みヘッダーの作成/使用] プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- PrecompiledHeaderThrough と UsePrecompiledHeader を参照してください。
例
次のコードをコンパイルしてみます。
#include <afxwin.h> // Include header for class library
#include "resource.h" // Include resource definitions
#include "myapp.h" // Include information specific to this app
...
これはコマンド ライン CL /YuMYAPP.H PROG.CPP でコンパイルされます。上の 3 つの #include ステートメントは処理されず、MYAPP.pch 内のプリコンパイル済みコードが使用されます。したがって、これらの 3 ファイルおよびこれ以外のインクルード ファイルのプリプロセス時間を節約できます。
.pch ファイルの名前が /Yc の引数 filename またはソース ファイルの基本名と異なる場合は、次のように /Yu オプションと /Fp (.pch ファイルの名前の指定) オプションを併用するとファイル名を指定できます。
CL /YuMYAPP.H /FpMYPCH.pch PROG.CPP
このコマンドでは、プリコンパイル済みヘッダー ファイルの名前として MYPCH.pch を指定しています。コンパイラは、このファイルの内容を使って、MYAPP.h までのすべてのヘッダー ファイルのプリコンパイル状態を復元します。その後、MYAPP.h を指定する include ステートメントの後ろのコードをコンパイルします。