共用方式為


/vmm、、 /vms/vmv (一般用途標記法)

當選取做為標記法方法 /vmg 使用 。 這些選項表示尚未遇到的類別定義的繼承模型。

語法

/vmm
/vms
/vmv

選項。

/vmm
指定類別成員之指標的最一般標記法,做為使用多個繼承的成員。

的對應 繼承關鍵字 和 引數 #pragma pointers_to_membersmultiple_inheritance

這個標記法大於單一繼承所需的標記法。

如果您使用 /vmm 並宣告具有虛擬繼承模型之類別成員的指標,編譯器會產生錯誤。

/vms
指定類別成員之指標的最一般標記法,做為不使用繼承或單一繼承的成員。的對應 繼承關鍵字 和 引數 #pragma pointers_to_memberssingle_inheritance

此選項會產生類別成員之指標的最小可能標記法。

如果您使用 /vms 並宣告具有多個或虛擬繼承模型之類別成員的指標,編譯器會產生錯誤。

/vmv
指定類別成員之指標的最一般標記法,做為使用虛擬繼承的成員。 這個指標表示永遠不會造成錯誤,而且是預設值。

的對應 繼承關鍵字 和 引數 #pragma pointers_to_membersvirtual_inheritance

此選項需要較大的指標和更多的程式碼來解譯指標,而不是其他選項。

備註

在 Visual Studio 2019 和舊版中,Microsoft 會針對指標對成員類型使用不同的標記法(大小不同)。 沒有繼承或單一繼承之類別成員的指標具有最小標記法。 具有多個繼承之類別成員的指標較大。 具有虛擬繼承之類別成員的指標是最大的。 當編譯器未指定任何表示模型時,它會預設使用最大的最一般標記法。

當您指定其中一個繼承模型選項時,該模型會用於類別成員的所有指標,不論其繼承類型為何,或是在類別之前或之後宣告指標。 如果您一律使用單一繼承類別,您可以使用 來編譯 /vms 來減少程式碼大小。 不過,如果您想要使用最一般的情況(犧牲最大的資料標記法),請使用 編譯 /vmv

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項 ] 方塊中輸入編譯器選項。

若要以程式方式設定這個編譯器選項

另請參閱

/vmb/vmg (標記法方法)
MSVC 編譯器選項
MSVC 編譯器命令列語法