pointers_to_members
pragma
Specifické pro C++
Určuje, zda lze ukazatel na člen třídy deklarovat před její přidruženou definicí třídy. Používá se k řízení velikosti ukazatele a kódu potřebného k interpretaci ukazatele.
Syntaxe
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[ ],
most-general-representation
)
Poznámky
Do zdrojového pointers_to_members
pragma souboru můžete umístit alternativu k použití možností kompilátoru/vmb
nebo /vms
/vmm
/vmv
/vmg
klíčových slov dědičnosti specifických pro Microsoft.
Argument deklarace ukazatele určuje, jestli jste před definicí přidružené funkce nebo za ní deklarovali ukazatel na člena. Argument pointer-declaration
je jedním z těchto dvou symbolů:
full_generality
Generuje bezpečný, někdy neoptimální kód. Použijtefull_generality
, pokud je některý ukazatel na člen deklarován před přidruženou definicí třídy. Tento argument vždy používá reprezentaci ukazatele určenou argumentemmost-general-representation
. Ekvivalent k/vmg
.best_case
Generuje optimální kód s použitím nejlepší reprezentace velkých písmen pro všechny ukazatele na členy. Vyžaduje, abyste před deklarem ukazatele na člena definovali třídu. Výchozí hodnota jebest_case
.
Argument most-general-representation
určuje nejmenší reprezentaci ukazatele, kterou má kompilátor použít k bezpečnému odkazování na jakýkoli ukazatel na člen třídy v jednotce překladu. Argumentem může být jedna z těchto hodnot:
single_inheritance
Nejobecnější reprezentace je ukazatel na jednoduchou dědičnost na členovou funkci. Ekvivalent k/vmg /vms
. Způsobí chybu v případě, že model dědičnosti definice třídy je více nebo virtuální.multiple_inheritance
Nejobecnější reprezentace je ukazatel více dědičnosti na členovou funkci. Ekvivalent k/vmg /vmm
. Způsobí chybu, pokud je model dědičnosti definice třídy virtuální.virtual_inheritance
Nejobecnější reprezentace je ukazatel virtuální dědičnosti na členovou funkci. Ekvivalent k/vmg /vmv
. Nikdy nezpůsobí chybu.virtual_inheritance
je výchozí argument při#pragma pointers_to_members(full_generality)
použití.
Upozornění
Doporučujeme umístit pointers_to_members
pragma pouze do souboru zdrojového kódu, který chcete ovlivnit, a až po jakýchkoli #include
direktivách. Tento postup snižuje riziko, že pragma ovlivní jiné soubory a že omylem zadáte více definic pro stejnou proměnnou, funkci nebo název třídy.
Příklad
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
Specifické pro END C++