/Gh (habilitar função de gancho _penter)
Causa uma chamada para a função _penter
no início de cada método ou função.
Sintaxe
/Gh
Comentários
A função _penter
não faz parte de nenhuma biblioteca. Cabe a você fornecer uma definição para _penter
.
A menos que planeje chamar _penter
explicitamente, não é necessário fornecer um protótipo. A função deve efetuar push do conteúdo de todos os registros na entrada e exibir o conteúdo inalterado na saída. Ela deve aparecer como se tivesse o seguinte protótipo:
void __declspec(naked) __cdecl _penter( void );
Essa declaração não está disponível para projetos de 64 bits.
Para definir esta opção do compilador no ambiente de desenvolvimento do Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
Digite a opção do compilador na caixa Opções Adicionais.
Para definir essa opção do compilador via programação
- Consulte AdditionalOptions.
Exemplo
O código a seguir, quando compilado com /Gh, mostra como _penter
é chamado duas vezes; uma vez ao inserir a função main
e uma vez ao entrar na função x
. O exemplo consiste em dois arquivos de origem, que você deve compilar separadamente.
Arquivo de origem local_penter.cpp
:
// local_penter.cpp
// compile with: cl /EHsc /c local_penter.cpp
// processor: x86
#include <stdio.h>
extern "C" void __declspec(naked) __cdecl _penter( void ) {
_asm {
push eax
push ebx
push ecx
push edx
push ebp
push edi
push esi
}
printf_s("\nIn a function!");
_asm {
pop esi
pop edi
pop ebp
pop edx
pop ecx
pop ebx
pop eax
ret
}
}
Arquivo de origem Gh_compiler_option.cpp
:
// Gh_compiler_option.cpp
// compile with: cl /EHsc /Gh Gh_compiler_option.cpp local_penter.obj
// processor: x86
#include <stdio.h>
void x() {}
int main() {
x();
}
Quando executada, a função local _penter
é chamada na entrada para main
e x
:
In a function!
In a function!
Confira também
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC
/GH
(Habilitar função de gancho _pexit)