pointers_to_members
pragma
Específico do C++
Especifica se um ponteiro para um membro de classe pode ser declarado antes de sua definição de classe associada. Usado para controlar o tamanho do ponteiro e o código necessário para interpretar o ponteiro.
Sintaxe
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
,
most-general-representation
[ ])
Comentários
Você pode colocar um pointers_to_members
pragma no arquivo de origem como alternativa ao uso das opções do compilador /vmb
ou /vmg
e /vmm
, /vms
, /vmv
das palavras-chave de herança específicas da Microsoft.
O argumento pointer-declaration especifica se você declarou um ponteiro para um membro antes ou depois da definição de função associada. O argumento pointer-declaration
é um destes dois símbolos:
full_generality
Gerencia o código seguro, às vezes não ideal. Usefull_generality
se qualquer ponteiro para um membro for declarado antes da definição da classe associada. Esse argumento sempre usa a representação do ponteiro especificada pelo argumentomost-general-representation
. Equivalente a/vmg
.best_case
Gera o código ideal usando a melhor representação de letras maiúsculas e minúsculas para todos os ponteiros dos membros. Exige que você defina a classe antes de declarar um ponteiro para um membro. O padrão ébest_case
.
O argumento most-general-representation
especifica a menor representação de ponteiro que o compilador deve usar para referenciar com segurança qualquer ponteiro para um membro de uma classe em uma unidade de tradução. O argumento pode ser um destes valores:
single_inheritance
A representação mais geral é um ponteiro de herança única para a função de membro. Equivalente a/vmg /vms
. Causará um erro se o modelo de herança de uma definição de classe for múltiplo ou virtual.multiple_inheritance
A representação mais geral é um ponteiro de herança única para a função de membro. Equivalente a/vmg /vmm
. Causará um erro se o modelo de herança de uma definição de classe for virtual.virtual_inheritance
A representação mais geral é um ponteiro de herança única para a função de membro. Equivalente a/vmg /vmv
. Nunca causa um erro.virtual_inheritance
é o argumento padrão quando se usa#pragma pointers_to_members(full_generality)
.
Cuidado
Nós recomendamos que você coloque o pointers_to_members
pragma somente no arquivo de código-fonte que deseja afetar e somente depois de todas as diretivas #include
. Essa prática reduz o risco de que pragma afetará outros arquivos e que você acidentalmente especifique várias definições para a mesma variável, função ou nome de classe.
Exemplo
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END Específico do C++