/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
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.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
Escriba la opción del compilador en el cuadro Opciones adicionales.
Para establecer esta opción del compilador mediante programación
- Vea AdditionalOptions.
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)