/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 に指示します。