pointers_to_members
pragma
特定C++
指定是否可以在其相關聯的類別定義之前宣告類別成員的指標。 用來控制指標大小,以及解譯指標所需的程序代碼。
語法
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
備註
您可以將 放在pointers_to_members
原始程序檔中,作為使用 /vmb
或 /vmg
和 /vmm
、/vms
、/vmv
編譯程式選項或Microsoft特定繼承關鍵詞的替代方式。pragma
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_members
pragma 任何指示詞之後 #include
。 這種做法可降低 會影響其他檔案的風險 pragma ,而且您不小心為相同的變數、函式或類別名稱指定多個定義。
範例
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ 特定