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

Essas opções determinam a ordem na qual 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 para todas as funções, exceto o membro de C++ de chamada, as funções e marcado como __stdcall ou __fastcall.

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

/GzEspecifica o __stdcall convenção para todas as funções, exceto o membro de C++ de chamada, 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, e /Gz não compatíveis com /CLR: safe ou /clr:pure.

ObservaçãoObservação

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

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

_ _ cdecl especificidades

Para C, a __cdecl o nome da função de usos de convenção de nomeação precedido por um sublinhado ( _ ); nenhuma conversão de maiúsculas é executada. A menos que declarado como extern "C", as funções de C++ usam um outro esquema de decoração de nome. For more information, see Nomes decorados.

especificações do __fastcall

Alguns de um __fastcall argumentos de função são passados em registros (para x86 processadores, ECX e EDX), e o restante são colocados na pilha da direita para a 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 chamando convenção para qualquer função escrita em linguagem assembly de in-line. O uso de registradores poderia entrar em conflito com o uso do compilador.

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

@function_name@number

Ao usar o __fastcall nomeação da convenção, o padrão de uso incluem arquivos. Caso contrário, você terá resolvidas referências externas.

especificações do __stdcall

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

Para C, a __stdcall o nome da função de usos de convenção de nomeação precedido por um sublinhado ( _ ) e seguido por uma arroba (@) e o tamanho do que os 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 decoraçã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 outro esquema de decoração de nome. For more information, see Nomes decorados.

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

FIM x 86 específicos

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

  1. Abra o projeto Property Pages caixa de diálogo. For details, see Como: Abrir páginas de propriedades do projeto.

  2. Clique o C/C++ pasta.

  3. Clique o Advanced página de propriedades.

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

Para definir esta opção de compilador programaticamente

Consulte também

Referência

Opções do compilador

Definindo opções do compilador