/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 相容。