pointers_to_members
pragma
C++-spezifisch
Gibt an, ob ein Zeiger auf ein Klassenelement vor der zugehörigen Klassendefinition deklariert werden kann. Wird verwendet, um die Zeigergröße zu steuern, und den Code, der zum Interpretieren des Zeigers erforderlich ist.
Syntax
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
Hinweise
Sie können eine pointers_to_members
pragma In ihrer Quelldatei als Alternative zur Verwendung der /vmb
Oder/vmg
- und /vmm
, /vmv
/vms
Compileroptionen oder der von Microsoft spezifischen Vererbungsstichwörtern platzieren.
Das Argument "Zeigerdeklaration" gibt an, ob Sie vor oder nach der zugehörigen Funktionsdefinition einen Zeiger auf ein Element deklariert haben. Das pointer-declaration
Argument ist eines der folgenden beiden Symbole:
full_generality
Generiert sicheren, manchmal nicht optimalen Code. Verwenden Siefull_generality
, wenn ein Zeiger auf ein Element vor der zugehörigen Klassendefinition deklariert wird. Dieses Argument verwendet immer die durch dasmost-general-representation
Argument angegebene Zeigerdarstellung. Entspricht/vmg
.best_case
Generiert optimalen Code mit optimaler Groß-/Kleinschreibung für alle Zeiger auf Member. Erfordert, dass Sie die Klasse definieren, bevor Sie einen Zeiger auf ein Element deklarieren. Der Standardwert istbest_case
.
Das most-general-representation
Argument gibt die kleinste Zeigerdarstellung an, die der Compiler verwenden soll, um sicher auf ein Element einer Klasse in einer Übersetzungseinheit zu verweisen. Das Argument kann einer der folgenden Werte sein:
single_inheritance
Die allgemeinste Darstellung ist der Zeiger für die Einzelvererbung auf Memberfunktion. Entspricht/vmg /vms
. Verursacht einen Fehler, wenn das Vererbungsmodell einer Klassendefinition entweder mehrfach oder virtuell ist.multiple_inheritance
Die allgemeinste Darstellung ist ein Mehrfachvererbungszeiger auf Memberfunktion. Entspricht/vmg /vmm
. Verursacht einen Fehler, wenn das Vererbungsmodell einer Klassendefinition virtuell ist.virtual_inheritance
Die allgemeinste Darstellung ist der Zeiger der virtuellen Vererbung auf Memberfunktion. Entspricht/vmg /vmv
. Löst nie einen Fehler aus.virtual_inheritance
ist das Standardargument, wenn#pragma pointers_to_members(full_generality)
es verwendet wird.
Achtung
Wir empfehlen Ihnen, die pointers_to_members
pragma einzige In der Quellcodedatei einzufügen, die Sie betreffen möchten, und nur nach allen #include
Direktiven. Diese Vorgehensweise reduziert das Risiko, dass sich dies pragma auf andere Dateien auswirkt, und dass Sie versehentlich mehrere Definitionen für die gleiche Variable, Funktion oder den Klassennamen angeben.
Beispiel
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++-spezifisch