Condividi tramite


/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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.

  2. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  3. Immettere l'opzione del compilatore nella casella Opzioni aggiuntive.

Per impostare l'opzione del compilatore a livello di codice

Vedi anche

/vmb, /vmg (metodo Representation)
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC