/Gh (Włącz funkcję _penter Hook)
Powoduje wywołanie _penter
funkcji na początku każdej metody lub funkcji.
Składnia
/Gh
Uwagi
Funkcja _penter
nie jest częścią żadnej biblioteki. Wystarczy podać definicję dla _penter
elementu .
Jeśli nie planujesz jawnie wywołać _penter
metody , nie musisz udostępniać prototypu. Funkcja musi wypchnąć zawartość wszystkich rejestrów we wpisie i wyskakować niezmienioną zawartość po zakończeniu. Musi wyglądać tak, jakby miał następujący prototyp:
void __declspec(naked) __cdecl _penter( void );
Ta deklaracja nie jest dostępna dla projektów 64-bitowych.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Wprowadź opcję kompilatora w polu Dodatkowe opcje .
Aby programowo ustawić tę opcję kompilatora
- Zobacz: AdditionalOptions.
Przykład
Poniższy kod, podczas kompilacji z /Gh, pokazuje, jak _penter
jest wywoływany dwa razy; raz podczas wprowadzania funkcji main
i raz podczas wprowadzania funkcji x
. Przykład składa się z dwóch plików źródłowych, które są kompilowane oddzielnie.
Plik local_penter.cpp
źródłowy:
// 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
}
}
Plik Gh_compiler_option.cpp
źródłowy:
// 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();
}
Po uruchomieniu funkcja lokalna _penter
jest wywoływana przy wpisie do main
i x
:
In a function!
In a function!
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/GH
(Włącz funkcję _pexit hook)