次の方法で共有


emitidl

後続の IDL 属性をすべて処理し、生成される .idl ファイルに配置するかどうかを決定します。

[ emitidl([boolean],
      defaultimports=[boolean]
) ] ;

パラメータ

  • boolean
    可能な値は truefalseforcedrestrictedpush、または 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 に設定されます。

必要条件

属性コンテキスト

対象

任意

複数回の適用

不可

必要な属性

なし

無効な属性

なし

詳細については、「属性コンテキスト」を参照してください。

参照

概念

コンパイラ属性

スタンドアロン属性

ATL サンプル