共用方式為


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

string_defaultvalue

強制 MIDL 編譯程式將 [defaultvalue] 中的字串強制 屬性轉換成 VARIANT。VT_I4類型,再將值強制轉換成正確的類型。

signed_wchar_t

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

言論

  • maybenull_sizeis:請參閱 [disable_consistency_check]。

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

    在下列範例結構中,線緩衝區包含 7 個字節對齊間距,可將超成員對齊字元成員之後的 8。 若是「目標 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 編譯程式不會在將字串常數轉換成類型\nVT_LPSTR ™ 或VT_LPWSTR時,處理逸出序列,例如 ̃\t†™ 等逸出序列。 使用此回溯相容性參數選項時,會評估逸出序列。

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

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