Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Causes a call to the _penter function at the start of every method or function.
/Gh
Remarks
The _penter function is not part of any library and it is up to you to provide a definition for _penter.
Unless you plan to explicitly call _penter, you do not need to provide a prototype. The function must appear as if it had the following prototype, and it must push the content of all registers on entry and pop the unchanged content on exit:
void __declspec(naked) _cdecl _penter( void );
This declaration is not available for 64-bit projects.
To set this compiler option in the Visual Studio development environment
- Open the project's Property Pages dialog box. For details, see How to: Open Project Property Pages. 
- Click the C/C++ folder. 
- Click the Command Line property page. 
- Type the compiler option in the Additional Options box. 
To set this compiler option programmatically
- See AdditionalOptions.
Example
The following code, when compiled with /Gh, shows how _penter is called twice; once when entering function main and once when entering function 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!