Dela via


pointers_to_members pragma

C++ Specifik

Anger om en pekare till en klassmedlem kan deklareras före dess associerade klassdefinition. Används för att styra pekarstorleken och den kod som krävs för att tolka pekaren.

Syntax

#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality [ ,most-general-representation ] )

Anmärkningar

Du kan placera en pointers_to_memberspragma i källfilen som ett alternativ till att använda /vmb eller /vmg och /vmm, /vms, /vmv kompilatoralternativ eller Microsoft-specifika arvsnyckelord.

Argumentet pekardeklaration anger om du har deklarerat en pekare till en medlem före eller efter den associerade funktionsdefinitionen. Argumentet pointer-declaration är en av följande två symboler:

  • full_generality
    Genererar säker, ibland icke-optimal kod. Använd full_generality om någon pekare till en medlem deklareras före den associerade klassdefinitionen. Det här argumentet använder alltid pekarrepresentationen som anges av argumentet most-general-representation. Motsvarar /vmg.

  • best_case
    Genererar optimal kod med bästa möjliga representation för alla pekare till medlemmar. Kräver att du definierar klassen innan du deklarerar en pekare till en medlem. Standardvärdet är best_case.

Argumentet most-general-representation anger den minsta pekarrepresentation som kompilatorn ska använda för att på ett säkert sätt referera till en pekare till en medlem i en klass i en översättningsenhet. Argumentet kan vara ett av följande värden:

  • single_inheritance
    Den mest allmänna representationen är pekaren med enkel arv till medlemsfunktionen. Motsvarar /vmg /vms. Orsakar ett fel om arvsmodellen för en klassdefinition är antingen flera eller virtuell.

  • multiple_inheritance
    Den mest allmänna representationen är pekaren med flera arv till medlemsfunktionen. Motsvarar /vmg /vmm. Orsakar ett fel om arvsmodellen för en klassdefinition är virtuell.

  • virtual_inheritance
    Den mest allmänna representationen är pekaren för virtuellt arv till medlemsfunktionen. Motsvarar /vmg /vmv. Orsakar aldrig ett fel. virtual_inheritance är standardargumentet när #pragma pointers_to_members(full_generality) används.

Försiktighet

Vi rekommenderar att du placerar pointers_to_memberspragma endast i den källkodsfil som du vill påverka, och endast efter några #include direktiv. Den här metoden minskar risken för att pragma påverkar andra filer och att du av misstag anger flera definitioner för samma variabel, funktion eller klassnamn.

Exempel

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

END C++ Specifik

Se även

Pragma-direktiv och nyckelorden __pragma och _Pragma