Freigeben über


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_memberspragma In ihrer Quelldatei als Alternative zur Verwendung der /vmb Oder/vmg- und /vmm, /vmv /vmsCompileroptionen 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 Sie full_generality , wenn ein Zeiger auf ein Element vor der zugehörigen Klassendefinition deklariert wird. Dieses Argument verwendet immer die durch das most-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 ist best_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_memberspragma 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

Siehe auch

PragmaDirektiven und Schlüsselwörter __pragma _Pragma