/headerUnit
(ヘッダー ユニット IFC を使用)
ヘッダー ユニットをインポートします。 指定されたヘッダーの .ifc
ファイル (ヘッダー ユニットのバイナリ表現) を検索する場所をコンパイラに指示します。
構文
/headerUnit
header-filename
=ifc-filename
/headerUnit:quote
header-filename
=ifc-filename
/headerUnit:angle
header-filename
=ifc-filename
引数
header-filename
import header-name;
の際、コンパイラは、header-name
をディスク上のファイルへと解決します。 そのファイルを指定するには、header-filename
を使用します。 照合が終わると、コンパイラは ifc-filename
によって指定された対応する IFC をインポート用に開きます。
ifc-filename
コンパイル済みヘッダー ユニットの情報を格納しているファイルの名前です。 複数のヘッダー ユニットをインポートするには、ファイルごとに個別の /headerUnit
オプションを追加します。
解説
/headerUnit
コンパイラ オプションには、/std:c++20
以降が必要です。
/headerUnit
コンパイラ オプションは、Visual Studio 2019 バージョン 16.10 以降で使用できます。
コンパイラが import "file";
や import <file>;
にまたがっている場合は、このコンパイラ オプションを使用することで、指定されたヘッダー ファイルに対するコンパイル済みヘッダー ユニット (.ifc
) をコンパイラによって検索できるようになります。 このファイルへのパスは、次の方法で表すことができます。
/headerUnit
: 現在のディレクトリ、またはifc-filename
によって指定された場所で、コンパイル済みヘッダー ユニットを検索します。/headerUnit:quote
:#include "file"
と同じルールを使用して、コンパイル済みヘッダー ユニット ファイルを検索します。/headerUnit:angle
:#include <file>
と同じルールを使用して、コンパイル済みヘッダー ユニット ファイルを検索します。
コンパイラでは、1 つの header-name
を複数の .ifc
ファイルにマップすることはできません。 複数の header-name
引数を 1 つの .ifc
にマップできます。 .ifc
の内容は、header-name
によって指定された唯一のヘッダーであるかのようにインポートされます。
このオプションが使用された場合、コンパイラは新しいプリプロセッサを暗黙的に有効にします。 コマンド ラインで何らかのフォームの /headerUnit
が指定されている場合には、コンパイラによって /Zc:preprocessor
がコマンド ラインに追加されます。 暗黙的な /Zc:preprocessor
をオプト アウトするには、次のように指定します: /Zc:preprocessor-
新しいプリプロセッサを無効にしたにもかかわらず、コンパイルしたファイルによってヘッダー ユニットがインポートされた場合には、コンパイラからエラーが報告されます。
例
次の表に示すように、2 つのヘッダー ファイルとそのヘッダー ユニットを参照するプロジェクトがあるとします。
ヘッダー ファイル | IFC ファイル |
---|---|
C:\utils\util.h |
C:\util.h.ifc |
C:\app\app.h |
C:\app\app.h.ifc |
これらの特定のヘッダー ファイルに対するヘッダー ユニットを参照するコンパイラ オプションは、次のようになります。
cl ... /std:c++latest /headerUnit C:\utils\util.h=C:\util.h.ifc /headerUnit:quote app.h=app.h.ifc
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
通常、これは Visual Studio 開発環境で設定することはありません。 これはビルド システムによって設定されます。
関連項目
/exportHeader
(ヘッダー ユニットの作成)
/headerName
(指定されたヘッダーからのヘッダー ユニットの作成)
/reference
(名前付きモジュール IFC の使用)
/translateInclude
(インクルード ディレクティブをインポート ディレクティブに変換する)