/ 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çã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çã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çã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
Abra o projeto Property Pages caixa de diálogo. For details, see Como: Abrir páginas de propriedades do projeto.
Clique o C/C++ pasta.
Clique o Advanced página de propriedades.
Modificar o Convenção de chamada propriedade.
Para definir esta opção de compilador programaticamente
- See CallingConvention.