Delen via


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_memberspragma 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. Gebruik full_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 argument most-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 is best_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_memberspragma 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

Zie ook

Pragma-instructies en de __pragma en _Pragma trefwoorden