次の方法で共有


/backward_compat スイッチ

/backward_compat スイッチは、RPC/COM スタブを生成するときに、いくつかの高度な機能をオフにするように MIDL コンパイラに指示します。

midl /backward_compat { maybenull_sizeis | zeroout_alignmentgap | 
     BSTR_byvalue_escaping | string_defaultvalue | signed_wchar_t }

スイッチ オプション

maybenull_sizeis

[disable_consistency_check] 属性を MIDL コンパイル全体に適用します。

zeroout_alignmentgap

マーシャリングされたバッファー内のギャップのゼロ化をオフにします。

BSTR_byvalue_escaping

MIDL コンパイラに、BSTR で †̃\ñ ™ または ̃\t†™ などのエスケープ シーケンスを受け入れるよう指示します。

string_defaultvalue

MIDL コンパイラで、[defaultvalue] 属性の文字列を VARIANT に強制します。値を正しい型に強制する前に、型をVT_I4します。

signed_wchar_t

VISUAL Basic との互換性のために、wchar_t型を署名済みとして扱うように MIDL に指示します。

備考

  • maybenull_sizeis: [disable_consistency_check] を参照してください。

  • zeroout_alignmentgap: IDL が â€"target NT60 以上でコンパイルされると、MIDL はスタブを作成し、ワイヤ バッファー内のメンバーまたは構造体間のアライン ギャップをゼロにします。 コマンド ライン スイッチ /backward_compat zeroout_alignmentgap は、MIDL にこの機能を無効にするよう指示します。

    次の構造体の例では、ワイヤ バッファーには、char メンバーの後にハイパー メンバーを 8 に配置する 7 バイトの配置ギャップが含まれています。 ターゲット NT60 以上では、スイッチを使用しない限り、MIDL はそのギャップをゼロにします。

    IDL ファイル:

    typedef struct _structwithgaps{
        char c;
        // 7 byte gap to align the following hyper to 8 
        hyper h;
    } structwithgap;
    

    このスイッチを使用すると、開示リスクが大幅に増加する可能性があるパフォーマンスが若干向上する可能性があります。

  • BSTR_byvalue_escaping: 既定では、MIDL コンパイラは、文字列定数をVT_LPSTR型またはVT_LPWSTR ™型に変換するときに、OLE Automation の文字列定数で ̃\ñ または ̃\t€ ™ などのエスケープ シーケンスを処理しません。 この下位互換性スイッチ オプションを使用すると、エスケープ シーケンスが評価されます。

  • string_defaultvalue: MIDL コンパイラは、[defaultvalue] 属性の数値文字列を VARIANT に強制します。値を正しい型に強制する前に、型をVT_I4します。 これにより、場合によっては精度が失われる可能性があるため、このスイッチ オプションは推奨されません。

  • signed_wchar_t: VISUAL Basic との互換性のために、WCHAR_T型を署名済みとして扱うように MIDL に指示します。