/Gh (Activer la fonction de raccordement _penter)
Provoque un appel à la _penter
fonction au début de chaque méthode ou fonction.
Syntaxe
/Gh
Notes
La _penter
fonction ne fait pas partie d’une bibliothèque. C’est à vous de fournir une définition pour _penter
.
Sauf si vous envisagez d’appeler _penter
explicitement, vous n’avez pas besoin de fournir un prototype. La fonction doit envoyer (push) le contenu de tous les registres à l’entrée et afficher le contenu inchangé à la sortie. Il doit apparaître comme s’il avait le prototype suivant :
void __declspec(naked) __cdecl _penter( void );
Cette déclaration n’est pas disponible pour les projets 64 bits.
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 Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Entrez l’option du compilateur dans la zone Options supplémentaires.
Pour définir cette option du compilateur par programmation
- Consultez AdditionalOptions.
Exemple
Le code suivant, lorsqu’il est compilé avec /Gh, montre comment _penter
est appelé deux fois ; une fois lors de l’entrée de la fonction et une fois lors de l’entrée de la fonction main
x
. L’exemple se compose de deux fichiers sources que vous compilez séparément.
Fichier source 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
}
}
Fichier source 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();
}
Lors de l’exécution, la fonction locale _penter
est appelée à l’entrée et main
x
:
In a function!
In a function!
Voir aussi
Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC
/GH
(Activer la fonction de raccordement _pexit)