Share via


pointers_to_members pragma

C++ 特定

指定是否可以在其相關聯的類別定義之前宣告類別成員的指標。 用來控制指標大小,以及解譯指標所需的程式碼。

語法

#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality [ ,most-general-representation ] )

備註

您可以將 放在 pointers_to_memberspragma 原始程式檔中,作為使用 /vmb/vmg/vmm/vms/vmv 編譯器選項或 Microsoft 特定 繼承關鍵字的 替代方案。

pointer-declaration 引數會指定您已在關聯函式定義前後宣告成員的指標。 自 pointer-declaration 變數是這兩個符號之一:

  • full_generality
    產生安全但有時並非是最佳化的程式碼。 如果在相關聯的類別定義之前宣告成員的任何指標,請使用 full_generality 。 這個引數一律會使用 引數所 most-general-representation 指定的指標標記法。 相當於 /vmg

  • best_case
    針對成員的所有指標,使用最佳案例標記法來產生最佳程式碼。 您需要先定義 類別,再宣告成員的指標。 預設值為 best_case

most-general-representation 變數會指定編譯器應該用來安全地參考轉譯單位中類別成員之任何指標的最小指標標記法。 引數可以是下列其中一個值:

  • single_inheritance
    最一般標記法是成員函式的單一繼承指標。 相當於 /vmg /vms。 如果類別定義的繼承模型是多個或虛擬,就會造成錯誤。

  • multiple_inheritance
    最一般標記法是成員函式的多重繼承指標。 相當於 /vmg /vmm。 如果類別定義的繼承模型是虛擬的,則會導致錯誤。

  • virtual_inheritance
    最一般標記法是成員函式的虛擬繼承指標。 相當於 /vmg /vmv。 永遠不會產生錯誤。 virtual_inheritance 是使用 時 #pragma pointers_to_members(full_generality) 的預設引數。

警告

建議您只將您想要影響的原始程式碼檔案放在 pointers_to_memberspragma 任何指示詞之後 #include 。 這種做法可降低 會影響其他檔案的風險 pragma ,而且您不小心為相同的變數、函式或類別名稱指定多個定義。

範例

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

END C++ 特定

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵字