/Gh (включение функции-обработчика _penter)
Вызывает вызов _penter
функции в начале каждого метода или функции.
Синтаксис
/Gh
Замечания
Функция _penter
не является частью любой библиотеки. Это до вас, чтобы указать определение для _penter
.
Если вы не планируете явно вызывать _penter
, вам не нужно предоставлять прототип. Функция должна отправлять содержимое всех регистров при входе и появляется неизменное содержимое при выходе. Он должен выглядеть так, как если бы он имел следующий прототип:
void __declspec(naked) __cdecl _penter( void );
Это объявление недоступно для 64-разрядных проектов.
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Введите параметр компилятора в поле "Дополнительные параметры ".
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.
Пример
Следующий код при компиляции с / Gh показывает, как _penter
вызывается дважды; один раз при вводе функции main
и один раз при вводе функции x
. Пример состоит из двух исходных файлов, которые компилируются отдельно.
Исходный файл 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
}
}
Исходный файл 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();
}
При выполнении локальная _penter
функция вызывается при входе main
и x
:
In a function!
In a function!
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC
/GH
(Включить функцию перехватчика _pexit)