Condividi tramite


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_membersnel file di origine come alternativa all'uso delle opzioni del/vmb compilatore o/vmm/vmg , /vms, /vmvo 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. Utilizzare full_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'argomento most-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_memberspragma 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

Vedi anche

Pragmadirettive e parole __pragma chiave e _Pragma