/vmm
、、 /vms
/vmv
(一般用途表示法)
當選取做為表示法方法時/vmg
使用。 這些選項表示尚未遇到的類別定義的繼承模型。
語法
/vmm
/vms
/vmv
選項。
/vmm
指定類別成員之指標的最一般表示法,做為使用多個繼承的成員。
對應繼承關鍵字與自變數#pragma pointers_to_members
為 multiple_inheritance
。
這個表示法大於單一繼承所需的表示法。
如果您使用 /vmm
並宣告具有虛擬繼承模型之類別成員的指標,編譯程式會產生錯誤。
/vms
指定類別成員之指標的最一般表示法,做為不使用繼承或單一繼承的成員。 對應繼承關鍵字 與自變數 #pragma pointers_to_members
為 single_inheritance
。
此選項會產生類別成員之指標的最小可能表示法。
如果您使用 /vms
並宣告具有多個或虛擬繼承模型之類別成員的指標,編譯程式會產生錯誤。
/vmv
指定類別成員之指標的最一般表示法,做為使用虛擬繼承的成員。 這個指標表示永遠不會造成錯誤,而且是預設值。
對應繼承關鍵字與自變數#pragma pointers_to_members
為 virtual_inheritance
。
此選項需要較大的指標和更多的程式代碼來解譯指標,而不是其他選項。
備註
在 Visual Studio 2019 和舊版中,Microsoft 針對指針對成員類型使用不同的表示法(大小不同)。 沒有繼承或單一繼承之類別成員的指標具有最小表示法。 具有多個繼承之類別成員的指標較大。 具有虛擬繼承之類別成員的指標是最大的。 當編譯程式未指定任何表示模型時,它會預設使用最大的最一般表示法。
當您指定其中一個繼承模型選項時,該模型會用於類別成員的所有指標,不論其繼承類型為何,或是在類別之前或之後宣告指標。 如果您一律使用單一繼承類別,您可以使用 來編譯 /vms
來減少程序代碼大小。 不過,如果您想要使用最一般的情況(犧牲最大的數據表示法),請使用 編譯 /vmv
。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [ 其他選項 ] 方塊中輸入編譯程序選項。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。