Поделиться через


/Gh (Включение функции обработчика _penter)

Обновлен: Ноябрь 2007

Вызывает функцию _penter при запуске каждого метода или функции.

 /Gh

Заметки

Функция _penter не является частью библиотеки, поэтому следует самостоятельно предоставить определение для _penter.

Если явно не планируется вызов _penter, нет необходимости предоставлять прототип. Функция должна выглядеть так, как если бы она имела следующий прототип; на входе она должна занести содержимое всех регистров в стек и извлечь неизмененное содержимое стека на выходе:

void __declspec(naked) _cdecl _penter( void );

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно проекта Страницы свойств. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.

  2. Выберите папку C/C++.

  3. Выберите страницу свойств Командная строка.

  4. Введите параметр компилятора в поле Дополнительные параметры.

Установка данного параметра компилятора программным способом

Пример

Следующий код при компиляции с помощью /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!

См. также

Ссылки

Параметры компилятора

Настройка параметров компилятора