/vmm
, /vms
, /vmv
(representação Uso Geral)
Usado quando /vmg
é selecionado como o método de representação. Essas opções indicam o modelo de herança da definição de classe ainda não encontrada.
Syntax
/vmm
/vms
/vmv
Opções
/vmm
Especifica a representação mais geral de um ponteiro para um membro de uma classe como uma que usa várias heranças.
A palavra-chave de herança correspondente e o argumento para #pragma pointers_to_members
é multiple_inheritance
.
Essa representação é maior do que a necessária para uma herança única.
Se você usar /vmm
e declarar um ponteiro para membro de uma classe que tenha um modelo de herança virtual, o compilador gerará um erro.
/vms
Especifica a representação mais geral de um ponteiro para um membro de uma classe como uma que usa uma herança ou herança única. A palavra-chave de herança correspondente e o argumento para #pragma pointers_to_members
é single_inheritance
.
Essa opção gera a menor representação possível de um ponteiro para um membro de uma classe.
Se você usar /vms
e declarar um ponteiro para membro de uma classe que tenha um modelo de herança múltipla ou virtual, o compilador gerará um erro.
/vmv
Especifica a representação mais geral de um ponteiro para um membro de uma classe como uma que usa a herança virtual. Essa representação de ponteiro nunca causa um erro e é o padrão.
A palavra-chave de herança correspondente e o argumento para #pragma pointers_to_members
é virtual_inheritance
.
Essa opção requer um ponteiro maior e mais código para interpretar o ponteiro do que as outras opções.
Comentários
no Visual Studio 2019 e versões anteriores, a Microsoft usa representações diferentes (de tamanhos diferentes) para tipos de ponteiro para membro. Ponteiros para membros de classes que não têm herança ou herança única têm a menor representação. Ponteiros para membros de classes que têm várias heranças são maiores. Ponteiros para membros de classes que têm herança virtual são o maior. Quando nenhum modelo de representação é especificado para o compilador, o padrão é usar a representação maior e mais geral.
Quando você especifica uma dessas opções de modelo de herança, esse modelo é usado para todos os ponteiros para membros de classe, independentemente de seu tipo de herança ou se você declarar o ponteiro antes ou depois da classe. Se você sempre usar classes de herança única, poderá reduzir o tamanho do código compilando com /vms
. No entanto, se você quiser usar o caso mais geral (às custas da maior representação de dados), compile com /vmv
.
Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.
Selecione a página de propriedade delinha de comandoC/C++>Propriedades> de configuração.
Insira a opção do compilador na caixa Opções adicionais .
Para definir essa opção do compilador via programação
- Consulte AdditionalOptions.
Consulte também
/vmb
, /vmg
(Método de representação)
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC