Compartir a través de


/GH (Habilitar la función de enlace _penter)

Provoca una llamada a la función _penter al principio de cada método o función.

Sintaxis

/Gh

Comentarios

La función _penter no forma parte de ninguna biblioteca. Depende de usted proporcionar una definición para _penter.

A menos que tenga previsto llamar explícitamente a _penter, no es necesario proporcionar un prototipo. La función debe insertar el contenido de todos los registros en la entrada y sacar el contenido sin modificar al salir. Debe aparecer como si tuviera el siguiente prototipo:

void __declspec(naked) __cdecl _penter( void );

Esta declaración no está disponible para proyectos de 64 bits.

Para establecer esta opción del compilador en el entorno de desarrollo de Visual Studio

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Escriba la opción del compilador en el cuadro Opciones adicionales.

Para establecer esta opción del compilador mediante programación

Ejemplo

El código siguiente, al compilarlo con /Gh, muestra cómo se llama dos veces a _penter; una vez al obtener acceso a la función main y otra al obtenerlo a la función x. El ejemplo consta de dos archivos de origen, que se compilan por separado.

Archivo de origen 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
    }
}

Archivo de origen 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();
}

Cuando se ejecuta, se llama a la función _penter local en la entrada a main y x:

In a function!
In a function!

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC
/GH (Habilitar la función de enlace _pexit)