emitidl
後続の IDL 属性をすべて処理し、生成される .idl ファイルに配置するかどうかを決定します。
[ emitidl([boolean],
defaultimports=[boolean]
) ] ;
パラメータ
boolean
可能な値は 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*=*[ boolean] (省略可能)
boolean が true の場合は、生成される .idl ファイルに docobj.idl をインポートします。また、ソース コードにインクルードする .h ファイルと同名の .idl ファイルが、.h ファイルと同じディレクトリに存在する場合は、生成される .idl ファイルにその .idl ファイルのインポート ステートメントが含まれます。
boolean が false の場合は、生成される .idl ファイルに docobj.idl はインポートされません。import を使用して明示的に .idl ファイルをインポートする必要はありません。
解説
ソース コード ファイルで C++ 属性 emitidl が見つかると、IDL カテゴリの属性が生成される .idl ファイルに配置されます。属性 emitidl がない場合は、ソース コード ファイルの IDL 属性が、生成される .idl ファイルに出力されます。
ソース コード ファイルには複数の emitidl を設定できます。ファイル内に [emitidl(false)]; があり、その後に [emitidl(true)]; がない場合は、生成される .idl ファイル内に属性が出力されません。
コンパイラによって新しいファイルが検出されるたびに、emitidl は暗黙に true に設定されます。
必要条件
属性コンテキスト
対象 |
任意 |
複数回の適用 |
不可 |
必要な属性 |
なし |
無効な属性 |
なし |
詳細については、「属性コンテキスト」を参照してください。