_set_purecall_handler, _set_purecall_handler_m

Legt den Handler für einen reinen virtuellen Funktionsaufruf fest.

_purecall_handler _set_purecall_handler( 
   _purecall_handler function
);
_purecall_handler _set_purecall_handler_m( 
   _purecall_handler_mfunction
);

Parameter

  • function
    Die Funktion, die aufgerufen werden soll, wenn eine rein virtuelle Funktion aufgerufen wird.Eine _purecall_handler oder _purecall_handler_m-Funktion sollte einen leeren Rückgabetyp verfügen.

Rückgabewert

Vorherige _purecall_handler.Gibt NULL zurück, wenn es keinen vorherigen Handler vorhanden waren.

Hinweise

Verwenden Sie _set_purecall_handler , wenn Sie rein virtuelle Funktionen abfangen und der Benutzer auf eine bestimmte Weise melden oder sie zu Debugzwecken abfangen möchten.

Da es sich um ein _purecall_handler für den gesamten Prozess vorhanden sind, wirkt sich das Aufrufen dieser Funktion sofort alle Threads aus.Der letzte Aufrufer auf einem beliebigen Thread den Handler legt diesen fest.

Es wird ein einzelner _set_purecall_handler-Handler für alle dynamisch verknüpfte DLL oder ausführbare Dateien. Auch wenn Sie _set_purecall_handler aufrufen, wird der Handler durch andere ersetzt oder das ersetzen Sie einen Handler, der durch eine andere DLL oder ausführbare Datei festgelegt ist.

So Standardverhalten wiederherstellen, rufen Sie _set_purecall_handler mit einemNULL-Argument.

Die _set_purecall_handler_m-Version der Funktion ist für gemischten Modus CRT.

Anforderungen

Routine

Erforderlicher Header

_set_purecall_handler,

_set_purecall_handler_m

<stdlib.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Beispiel

// _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;
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Fehlerbehandlung (CRT)

_purecall