Freigeben über


_set_purecall_handler

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

_purecall_handler _set_purecall_handler(     _purecall_handler function );

Parameter

  • function
    Die aufzurufende Funktion, wenn eine rein virtuelle Funktion aufgerufen wird. Eine _purecall_handler-Funktion muss einen void-Rückgabetyp haben.

Rückgabewert

Der vorherige _purecall_handler. Gibt NULL, wenn kein vorheriger Handler vorhanden ist.

Hinweise

Verwenden Sie _set_purecall_handler, wenn Sie rein virtuelle Funktionen abfangen und sie dem Benutzer auf eine spezifische Weise melden oder sie für Debuggingzwecke abfangen möchten.

Da es einen _purecall_handler für den gesamten Prozess gibt, wirkt sich das Aufrufen dieser Funktion sofort auf alle Threads aus. Der letzte Aufrufer in einem beliebigen Thread legt den Handler fest.

Es gibt einen einzigen _set_purecall_handler-Handler für alle dynamisch verknüpften DLLs oder ausführbaren Dateien. Auch wenn Sie _set_purecall_handler aufrufen, wird Ihr Handler möglicherweise durch einen anderen ersetzt, oder Sie ersetzen einen Handler, der von einer anderen DLL oder ausführbaren Datei festgelegt wurde.

Rufen Sie zum Wiederherstellen des Standardverhaltens _set_purecall_handler mit einem NULL-Argument auf.

Anforderungen

Routine

Erforderlicher Header

_set_purecall_handler

<stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter 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. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Fehlerbehandlung (CRT)

_purecall