共用方式為


/backward_compat 參數

/backward_compat 參數會指示 MIDL 編譯器在產生 RPC/COM 存根時關閉一些進階功能。

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 編譯器接受逸出序列,例如 ̃\n†™ 或 ̃\t†™ 在 BSTR 中。

string_defaultvalue

強制 MIDL 編譯器將 [defaultvalue] 屬性中的字串強制轉換成 VARIANT。在將值強制轉換成正確的型別之前,先VT_I4類型。

signed_wchar_t

指示 MIDL 將wchar_t類型視為已簽署,以便與 Visual Basic 相容。

備註

  • maybenull_sizeis:請參閱 [disable_consistency_check]。

  • zeroout_alignmentgap:使用 â\「target NT60 或更新版本編譯 ID 時,MIDL 會建立存根,以零掉成員或線路緩衝區中結構之間的任何對齊間距。 命令列參數 /backward_compat zeroout_alignmentgap 指示 MIDL 停用此功能。

    在下列範例結構中,線緩衝區包含 7 位元組對齊間距,可將超成員對齊 char 成員之後的 8。 使用 â€「target 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 編譯器不會處理逸出序列,例如 ̃\n†™ 或 ̃\t†™ 在 OLE Automation 的字串常數中,將字串常數轉換成類型VT_LPSTR或VT_LPWSTR。 使用這個回溯相容性參數選項時,會評估逸出序列。

  • string_defaultvalue:強制 MIDL 編譯器將 [defaultvalue] 屬性中的數值字串強制轉換成 VARIANT。在將值強制轉換成正確的型別之前,先VT_I4類型。 在某些情況下,這可能會導致精確度遺失,因此不建議使用此參數選項。

  • signed_wchar_t:指示 MIDL 將wchar_t類型視為已簽署,以便與 Visual Basic 相容。