pointers_to_members
pragma
Specifiche di C++
Specifica se un puntatore a un membro di classe può essere dichiarato prima della definizione della classe associata. Usato per controllare le dimensioni del puntatore e il codice necessario per interpretare il puntatore.
Sintassi
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
Osservazioni:
È possibile inserire un oggetto pointers_to_members
nel file di origine come alternativa all'uso delle opzioni del/vmb
compilatore o/vmm
/vmg
, /vms
, /vmv
o delle parole chiave di ereditarietà specifiche di Microsoft.pragma
L'argomento pointer-declaration specifica se è stato dichiarato un puntatore a un membro prima o dopo la definizione della funzione associata. L'argomento pointer-declaration
è uno dei due simboli seguenti:
full_generality
Genera codice sicuro e talvolta non ottimale. Utilizzarefull_generality
se un puntatore a un membro viene dichiarato prima della definizione della classe associata. Questo argomento usa sempre la rappresentazione del puntatore specificata dall'argomentomost-general-representation
. È equivalente a/vmg
.best_case
Genera codice ottimale usando la rappresentazione con maiuscole e minuscole per tutti i puntatori ai membri. Richiede di definire la classe prima di dichiarare un puntatore a un membro. Il valore predefinito èbest_case
.
L'argomento most-general-representation
specifica la rappresentazione del puntatore più piccola che il compilatore deve usare per fare riferimento in modo sicuro a qualsiasi puntatore a un membro di una classe in un'unità di conversione. L'argomento può essere uno di questi valori:
single_inheritance
La rappresentazione più generale è un puntatore a ereditarietà singola alla funzione membro. È equivalente a/vmg /vms
. Genera un errore se il modello di ereditarietà di una definizione di classe è multiplo o virtuale.multiple_inheritance
La rappresentazione più generale è un puntatore a ereditarietà multipla alla funzione membro. È equivalente a/vmg /vmm
. Genera un errore se il modello di ereditarietà di una definizione di classe è virtuale.virtual_inheritance
La rappresentazione più generale è il puntatore di ereditarietà virtuale alla funzione membro. È equivalente a/vmg /vmv
. Non genera mai un errore.virtual_inheritance
è l'argomento predefinito quando#pragma pointers_to_members(full_generality)
viene utilizzato.
Attenzione
Ti consigliamo di inserire l'unico pointers_to_members
pragma nel file di codice sorgente che vuoi influire e solo dopo qualsiasi #include
direttiva. Questa procedura riduce il rischio che l'oggetto pragma influirà su altri file e che verranno specificate accidentalmente più definizioni per la stessa variabile, funzione o nome della classe.
Esempio
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ specifico