emitidl
後続のすべての IDL 属性を処理し、生成された .idl ファイルに配置するかどうかを指定します。
構文
[ emitidl(state, defaultimports=boolean) ];
パラメーター
state
true
、false
、forced
、restricted
、push
、または pop
のいずれかの値。
true
の場合、ソース コード ファイルで検出された IDL カテゴリ属性がすべて、生成された .idl ファイルに配置されます。 これは、emitidl の既定の設定です。false
の場合、ソース コード ファイルで検出された IDL カテゴリ属性はいずれも、生成された .idl ファイルに配置されません。restricted
の場合、module 属性のないファイルに IDL 属性を配置できます。 コンパイラは .idl ファイルを生成しません。forced
の場合、後続のrestricted
属性をオーバーライドします。これにより、ファイルに IDL 属性がある場合は、ファイルにmodule
属性が必要になります。push
は、現在の emitidl 設定を内部の emitidl スタックに保存できるようにし、pop
は、内部の emitidl スタックの最上部にある任意の値に emitidl を設定できるようにします。
defaultimports=
ブール値 (省略可能)
ブール値が
true
の場合、docobj.idl が生成された .idl ファイルにインポートされます。 また、ソース コードに#include
する .h ファイルと同じ名前の .idl ファイルが .h ファイルと同じディレクトリに見つかった場合、生成された .idl ファイルに、その .idl ファイルのインポート ステートメントが含められます。ブール値が
false
の場合、docobj.idl が生成された .idl ファイルにインポートされません。 import を使用して .idl ファイルを明示的にインポートする必要があります。
解説
ソース コード ファイルに emitidl C++ 属性が検出されると、生成された .idl ファイルに IDL カテゴリ属性が配置されます。 emitidl 属性がない場合は、ソース コード ファイル内の IDL 属性が生成された .idl ファイルに出力されます。
ソース コード ファイルに複数の emitidl 属性が含まれている可能性があります。 ファイルに [emitidl(false)];
が検出され、後続の [emitidl(true)];
がない場合、属性が処理されて生成された .idl ファイルに含められることはありません。
コンパイラが新しいファイルを検出するたびに、emitidl は暗黙的に true
に設定されます。
要件
属性コンテキスト | 値 |
---|---|
適用対象 | 任意の場所 |
反復可能 | いいえ |
必要な属性 | なし |
無効な属性 | なし |
詳細については、「 属性コンテキスト」を参照してください。