引起在每个方法或函数的开头调用 _penter 函数。
语法
/Gh
备注
_penter 函数不属于任何库。 由你提供 _penter 的定义。
除非计划显式调用 _penter,否则无需提供原型。 该函数必须在进入时推送所有寄存器的内容,并在退出时弹出未更改的内容。 必须看起来像是具有以下原型:
void __declspec(naked) __cdecl _penter( void );
此声明不适用于 64 位项目。
在 Visual Studio 开发环境中设置此编译器选项
- 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。 
- 选择“配置属性”>“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!