/Gh (Включение функции обработчика _penter)
Обновлен: Ноябрь 2007
Вызывает функцию _penter при запуске каждого метода или функции.
/Gh
Заметки
Функция _penter не является частью библиотеки, поэтому следует самостоятельно предоставить определение для _penter.
Если явно не планируется вызов _penter, нет необходимости предоставлять прототип. Функция должна выглядеть так, как если бы она имела следующий прототип; на входе она должна занести содержимое всех регистров в стек и извлечь неизмененное содержимое стека на выходе:
void __declspec(naked) _cdecl _penter( void );
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно проекта Страницы свойств. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Выберите папку C/C++.
Выберите страницу свойств Командная строка.
Введите параметр компилятора в поле Дополнительные параметры.
Установка данного параметра компилятора программным способом
- См. раздел AdditionalOptions.
Пример
Следующий код при компиляции с помощью /Gh, показывает как _penter вызывается дважды, один раз при введении функции main, а второй раз при введении функции x.
// Gh_compiler_option.cpp
// compile with: /Gh
// processor: x86
#include <stdio.h>
void x() {}
int main() {
x();
}
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
}
}
In a function!
In a function!