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