/Gh (Activer la fonction de raccordement _penter)
Mise à jour : novembre 2007
Déclenche un appel à la fonction _penter au début de chaque méthode ou fonction.
/Gh
Notes
La fonction _penter ne fait partie d'aucune bibliothèque et c'est à vous de fournir une définition pour _penter.
Sauf si vous envisagez d'appeler explicitement _penter, vous n'avez pas besoin de fournir un prototype. La fonction doit apparaître comme si elle avait le prototype suivant, et elle doit exécuter un push sur le contenu de tous les registres à l'entrée et un pop sur le contenu non modifié à la sortie :
void __declspec(naked) _cdecl _penter( void );
Pour définir cette option du compilateur dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d'informations, consultez Comment : ouvrir les pages de propriétés d'un projet.
Cliquez sur le dossier C/C++.
Cliquez sur la page de propriétés Ligne de commande.
Spécifiez l'option du compilateur dans la zone Options supplémentaires.
Pour définir cette option du compilateur par programme
- Consultez AdditionalOptions.
Exemple
Le code suivant, une fois compilé avec /Gh, montre comment _penter est appelée deux fois ; la première fois en entrant la fonction main et la deuxième fois en entrant la fonction 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!