Partager via


_set_purecall_handler

Définit le gestionnaire pour un appel de fonction virtuelle pure.

_purecall_handler _set_purecall_handler(     _purecall_handler function );

Paramètres

  • function
    Fonction à appeler quand une fonction virtuelle pure est appelée. Une fonction _purecall_handler doit avoir un type de retour void.

Valeur de retour

_purecall_handler précédent. Retourne NULL s'il n'existait pas de gestionnaire précédemment.

Notes

Utilisez _set_purecall_handler si vous voulez intercepter les fonctions virtuelles pures et les signaler à l'utilisateur d'une manière spécifique ou les intercepter à des fins de débogage.

Sachant qu'il n'existe qu'un seul _purecall_handler pour l'ensemble du processus, l'appel de cette fonction a un impact immédiat sur tous les threads. Le dernier appelant au niveau d'un thread est celui qui définit le gestionnaire.

Il existe un seul gestionnaire _set_purecall_handler pour l'ensemble des DLL ou exécutables liés de manière dynamique ; même si vous appelez _set_purecall_handler, il se peut que votre gestionnaire soit remplacé par un autre ou que vous remplaciez un gestionnaire défini par une autre DLL ou un autre exécutable.

Pour rétablir le comportement par défaut, appelez _set_purecall_handler avec un argument NULL.

Configuration requise

Routine

En-tête requis

_set_purecall_handler

<stdlib.h>

Pour plus d'informations sur la compatibilité, voir 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, voir Exemples d'appel de plateforme.

Voir aussi

Référence

Gestion des erreurs (CRT)

_purecall