/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。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應