_set_purecall_handler, _set_purecall_handler_m
Définit le gestionnaire pour un appel de fonction virtuelle pure.
_purecall_handler _set_purecall_handler(
_purecall_handler function
);
_purecall_handler _set_purecall_handler_m(
_purecall_handler_mfunction
);
Paramètres
- function
La fonction à appeler lorsqu'une fonction virtuelle pure est appelée.Une fonction d' _purecall_handler ou d' _purecall_handler_m doit avoir un type de retour void.
Valeur de retour
_purecall_handlerprécédent.Retourne NULL s'il n'existe aucun gestionnaire précédent.
Notes
Utilisez _set_purecall_handler si vous souhaitez intercepter les fonctions virtuelles pures et les enregistrer à l'utilisateur de manière spécifique ou les intercepter à des fins de débogage.
Comme il y a un _purecall_handler pour le processus, appeler cette fonction exécute immédiatement tous les threads.Le dernier appelant sur n'importe quel thread définit le gestionnaire.
Il existe un gestionnaire unique d' _set_purecall_handler pour toutes les DLL ou fichiers exécutables dynamiquement liés ; même si vous appelez _set_purecall_handler votre gestionnaire peut être remplacée par une autre ou que vous remplacez un gestionnaire défini par une DLL ou un fichier exécutable différent.
Pour restaurer le comportement par défaut, appelez _set_purecall_handler avecun argument d'NULL .
La version d' _set_purecall_handler_m de la fonction est pour le CRT en mode mixte.
Configuration requise
routine |
en-tête requis |
---|---|
_set_purecall_handler, _set_purecall_handler_m |
<stdlib.h> |
Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.
Exemple
// _set_purecall_handler.cpp
// compile with: /W1
#include <tchar.h>
#include <stdio.h>
#include <stdlib.h>
class CDerived;
class CBase
{
public:
CBase(CDerived *derived): m_pDerived(derived) {};
~CBase();
virtual void function(void) = 0;
CDerived * m_pDerived;
};
class CDerived : public CBase
{
public:
CDerived() : CBase(this) {}; // C4355
virtual void function(void) {};
};
CBase::~CBase()
{
m_pDerived -> function();
}
void myPurecallHandler(void)
{
printf("In _purecall_handler.");
exit(0);
}
int _tmain(int argc, _TCHAR* argv[])
{
_set_purecall_handler(myPurecallHandler);
CDerived myDerived;
}
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.