Partager via


_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é.

Voir aussi

Référence

Gestion des erreurs (CRT)

_purecall