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_members
pragma 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ändfull_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 argumentetmost-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 ärbest_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_members
pragma 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