Sdílet prostřednictvím


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_memberspragma souboru můžete umístit alternativu k použití možností kompilátoru/vmbnebo /vms/vmm/vmv/vmgklíč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žijte full_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 argumentem most-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 je best_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_memberspragma 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++

Viz také

Direktivy Pragma a __pragma_Pragma klíčová slova