/vmm
, /vms
, /vmv
(rappresentazione per utilizzo generico)
Utilizzato quando /vmg
viene selezionato come metodo di rappresentazione. Queste opzioni indicano il modello di ereditarietà della definizione della classe non ancora rilevata.
Sintassi
/vmm
/vms
/vmv
Opzioni
/vmm
Specifica la rappresentazione più generale di un puntatore a un membro di una classe come una classe che usa più ereditarietà.
La parola chiave di ereditarietà e l'argomento corrispondenti a #pragma pointers_to_members
è multiple_inheritance
.
Questa rappresentazione è maggiore di quella necessaria per l'ereditarietà singola.
Se si usa /vmm
e si dichiara un puntatore a un membro di una classe con un modello di ereditarietà virtuale, il compilatore genera un errore.
/vms
Specifica la rappresentazione più generale di un puntatore a un membro di una classe come una classe che non utilizza ereditarietà o ereditarietà singola. La parola chiave di ereditarietà e l'argomento corrispondenti a #pragma pointers_to_members
è single_inheritance
.
Questa opzione genera la rappresentazione più piccola possibile di un puntatore a un membro di una classe.
Se si usa /vms
e si dichiara un puntatore a un membro di una classe con un modello di ereditarietà multipla o virtuale, il compilatore genera un errore.
/vmv
Specifica la rappresentazione più generale di un puntatore a un membro di una classe come una classe che usa l'ereditarietà virtuale. Questa rappresentazione del puntatore non genera mai un errore ed è l'impostazione predefinita.
La parola chiave di ereditarietà e l'argomento corrispondenti a #pragma pointers_to_members
è virtual_inheritance
.
Questa opzione richiede un puntatore più grande e più codice per interpretare il puntatore rispetto alle altre opzioni.
Osservazioni:
In Visual Studio 2019 e versioni precedenti Microsoft usa rappresentazioni diverse (di dimensioni diverse) per i tipi di puntatore a membro. I puntatori ai membri delle classi che non hanno ereditarietà o ereditarietà singola hanno la rappresentazione più piccola. I puntatori ai membri delle classi con più ereditarietà sono più grandi. I puntatori ai membri delle classi con ereditarietà virtuale sono i più grandi. Quando non viene specificato alcun modello di rappresentazione per il compilatore, per impostazione predefinita viene usato la rappresentazione più grande e generale.
Quando si specifica una di queste opzioni del modello di ereditarietà, tale modello viene usato per tutti i puntatori ai membri della classe, indipendentemente dal tipo di ereditarietà o dal fatto che il puntatore venga dichiarato prima o dopo la classe. Se si usano sempre classi di ereditarietà singola, è possibile ridurre le dimensioni del codice compilando con /vms
. Tuttavia, se si vuole usare il caso più generale (a scapito della rappresentazione dei dati più grande), compilare con /vmv
.
Per impostare l'opzione del compilatore nell'ambiente di sviluppo di Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.
Per impostare l'opzione del compilatore a livello di codice
- Vedere AdditionalOptions.
Vedi anche
/vmb
, /vmg
(metodo Representation)
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC