Compartilhar via


/ Gd, /Gr, /Gz (convenção de chamada)

Essas opções determinam a ordem em que os argumentos de função são colocados na pilha; Se a função do chamador ou a função chamada remove os argumentos da pilha no final da chamada; e a convenção de decoração de nome que o compilador usa para identificar as funções individuais.

/Gd
/Gr
/Gz

Comentários

ObservaçãoObservação

Essas opções de compilador só estão disponíveis no compilador x86; Essas opções de compilador não estão disponíveis nos compiladores direcionamento x64 ou Itanium.

/Gd, a configuração padrão, especifica o cdecl convenção de chamada para todas as funções, exceto de membro C++ as funções e marcado como __stdcall ou __fastcall.

/GrEspecifica o __fastcall convenção de chamada para todas as funções, exceto de membro C++ sfunctions e funções marcadas com __cdecl ou __stdcall.Todos os __fastcall funções devem ter protótipos.

/GzEspecifica o __stdcall convenção de chamada para todas as funções, exceto de membro C++ as funções e marcado como __cdecl ou __fastcall.Todos os __stdcall funções devem ter protótipos.

Funções que levam a um número variável de argumentos devem ser marcadas __cdecl.

/Gd, /Gr, and /Gz are not compatible with /clr:safe or /clr:pure.

ObservaçãoObservação

Para x86 processadores, por padrão, o uso de funções de membro C++ __thiscall.

Para os processadores, uma função de membro que esteja explicitamente marcado como __cdecl, __fastcall, ou __stdcall usa a convenção de chamada especificada.Uma função de membro que leva a um número variável de argumentos sempre usa o __cdecl convenção de chamada.

_ _ cdecl especificidades

Para C, o __cdecl o nome da função de usos de convenção de nomeação precedido por um caractere de sublinhado ( _ ); Nenhuma conversão de maiúsculas é executada.A menos que declarado como extern "C", as funções de C++ usam um esquema de decoração de nome diferente.Para obter mais informações, consulte Nomes decorados.

especificações de __fastcall

Alguns de um __fastcall argumentos de função são passados nos registradores (para x86 processadores, ECX e EDX), e o restante são colocados na pilha da direita para esquerda.A rotina chamada pops esses argumentos da pilha antes de retornar.Normalmente, /Gr diminui o tempo de execução.

ObservaçãoObservação

Tenha cuidado ao usar o __fastcall convenção de chamada para qualquer função escrita em linguagem de assembly embutido.O uso de registradores poderia entrar em conflito com o uso do compilador.

Para C, o __fastcall o nome da função de usos de convenção de nomeação precedido por uma arroba (@) seguido pelo tamanho dos argumentos da função em bytes.Não é feita nenhuma conversão de maiúsculas.O compilador usa o modelo a seguir para a convenção de nomenclatura:

@function_name@number

Ao usar o __fastcall convenção de nomeação, use os arquivos de inclusão padrão.Caso contrário, você obterá referências externas não resolvidas.

especificações de __stdcall

A __stdcall argumentos de função são colocados na pilha da direita para esquerda, a função chamada pops e esses argumentos da pilha antes de retornar.

Para C, o __stdcall o nome da função de usos de convenção de nomeação precedido por um caractere de sublinhado ( _ ) e seguido por uma arroba (@) e o tamanho dos argumentos da função em bytes.Nenhuma conversão de maiúsculas é executada.O compilador usa o modelo a seguir para a convenção de nomenclatura:

_functionname@number

x 86 específicos

Esta opção não tem efeito sobre a simplificação de nome de funções e métodos do C++.A menos que declarado como extern "C", funções e métodos de C++ usam um esquema de decoração de nome diferente.Para obter mais informações, consulte Nomes decorados.

Para obter mais informações sobre convenções de chamada, consulte Convenções de chamada.

FIM x 86 específicos

Para definir esta opção de compilador no ambiente de desenvolvimento Visual Studio

  1. Abra o projeto Páginas de propriedades caixa de diálogo.Para obter detalhes, consulte:Como: abrir páginas de propriedades do projeto.

  2. Clique no C/C++ pasta.

  3. Clique no Advanced página de propriedades.

  4. Modificar o Convenção de chamada propriedade.

Para definir essa opção de compilador programaticamente

Consulte também

Referência

Opções do compilador

Configurando opções de compilador