Partilhar via


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_memberspragma 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. Use full_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 argumento most-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_memberspragma 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++

Confira também

Pragmadiretivas e as __pragma palavras-chave e _Pragma