Partilhar via


pointers_to_members pragma

específicos do C++

Especifica se um ponteiro para um membro da 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 em seu arquivo de origem como uma alternativa ao uso das opções /vmb ou /vmg e /vmm, /vms, /vmv compilador ou as palavras-chave de herança de 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
    Gera código seguro, às vezes não ideal. Use full_generality se qualquer ponteiro para um membro for declarado antes da definição de classe associada. Esse argumento sempre usa a representação de ponteiro especificada pelo argumento most-general-representation. Equivalente a /vmg.

  • best_case
    Gera código ideal usando a representação de melhor caso para todos os ponteiros para membros. Requer 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 fazer referência segura a qualquer ponteiro a 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 é o ponteiro de herança única para a função de membro. Equivalente a /vmg /vms. Causa 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 é o ponteiro de herança múltipla para a função de membro. Equivalente a /vmg /vmm. Causa um erro se o modelo de herança de uma definição de classe for virtual.

  • virtual_inheritance
    A representação mais geral é o ponteiro de herança virtual para a função de membro. Equivalente a /vmg /vmv. Nunca causa um erro. virtual_inheritance é o argumento padrão quando #pragma pointers_to_members(full_generality) é usado.

Atenção

Aconselhamo-lo a colocar o pointers_to_memberspragma apenas no ficheiro de código fonte que pretende afetar, e apenas após quaisquer diretivas #include. Essa prática reduz o risco de que o pragma afete outros arquivos e que você especifique acidentalmente 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 )

específicos do END C++

Ver também

diretivas Pragma e as palavras-chave __pragma e _Pragma