pointers_to_members
pragma
C++-specifieke
Hiermee geeft u op of een aanwijzer naar een klasselid kan worden gedeclareerd vóór de bijbehorende klassedefinitie. Wordt gebruikt om de grootte van de aanwijzer te bepalen en de code die nodig is om de aanwijzer te interpreteren.
Syntaxis
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
Opmerkingen
U kunt een pointers_to_members
pragma in uw bronbestand plaatsen als alternatief voor het gebruik van de /vmb
of /vmg
en /vmm
, /vms
, /vmv
compileropties of de microsoft-specifieke overnametrefwoorden.
Het argument aanwijzer-declaratie geeft aan of u een aanwijzer hebt gedeclareerd voor of na de bijbehorende functiedefinitie. Het argument pointer-declaration
is een van deze twee symbolen:
full_generality
Genereert veilige, soms niet-optimale code. Gebruikfull_generality
als een aanwijzer naar een lid wordt gedeclareerd vóór de bijbehorende klassedefinitie. Dit argument gebruikt altijd de aanwijzerweergave die is opgegeven door het argumentmost-general-representation
. Gelijk aan/vmg
.best_case
Genereert optimale code met behulp van de beste weergave voor alle aanwijzers naar leden. Vereist dat u de klasse definieert voordat u een aanwijzer declareert naar een lid. De standaardwaarde isbest_case
.
Het argument most-general-representation
geeft de kleinste aanwijzer aan die de compiler moet gebruiken om veilig naar een lid van een klasse in een vertaaleenheid te verwijzen. Het argument kan een van deze waarden zijn:
single_inheritance
De meest algemene weergave is de aanwijzer met één overname naar de lidfunctie. Gelijk aan/vmg /vms
. Veroorzaakt een fout als het overnamemodel van een klassedefinitie meerdere of virtuele is.multiple_inheritance
De meest algemene weergave is de aanwijzer voor meerdere overnames naar de lidfunctie. Gelijk aan/vmg /vmm
. Veroorzaakt een fout als het overnamemodel van een klassedefinitie virtueel is.virtual_inheritance
De meest algemene weergave is de aanwijzer voor virtuele overname naar de lidfunctie. Gelijk aan/vmg /vmv
. Er wordt nooit een fout veroorzaakt.virtual_inheritance
is het standaardargument wanneer#pragma pointers_to_members(full_generality)
wordt gebruikt.
Voorzichtigheid
U wordt aangeraden de pointers_to_members
pragma alleen in het broncodebestand te plaatsen dat u wilt beïnvloeden, en pas na eventuele #include
instructies. Deze procedure vermindert het risico dat de pragma van invloed is op andere bestanden en dat u per ongeluk meerdere definities opgeeft voor dezelfde variabele, functie of klassenaam.
Voorbeeld
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ specifieke