Sdílet prostřednictvím


_set_purecall_handler, _set_purecall_handler_m

Nastaví obslužnou rutinu pro volání čistou virtuální funkci.

_purecall_handler _set_purecall_handler(     _purecall_handler function );

Parametry

  • function
    Funkce, která se má volat při volání čistou virtuální funkci.Objekt _purecall_handler funkce musí mít typ vrácené hodnoty void.

Vrácená hodnota

V předchozím _purecall_handler.Vrátí hodnotu NULL Pokud nebyla žádná předchozí obslužná rutina.

Poznámky

Použití _set_purecall_handler Pokud budete chtít catch čistého virtuální funkce a informovat uživatele určitým způsobem nebo zachytit výjimky pro účely ladění.

Vzhledem k tomu, že je jedna _purecall_handler pro celý proces okamžitě volání této funkce má dopad na všechna vlákna.Poslední volajícího z libovolného vlákna nastaví obslužnou rutinu.

Je jedinou _set_purecall_handler obslužné rutiny pro všechny dynamicky propojenou knihovny DLL nebo spustitelné soubory; i když zavoláte _set_purecall_handler vaše obslužná rutina může být nahrazena jinou nebo chcete nahradit obslužnou rutinu nastavena jiná knihovna DLL nebo spustitelný soubor.

Chcete-li obnovit výchozí chování, volejte _set_purecall_handler s NULL argument.

Požadavky

Rutina

Požadovaný hlavičkový soubor

_set_purecall_handler

< stdlib.h >

Další informace o kompatibilitě, podívejte se na téma kompatibility v zavedení.

Příklad

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

Ekvivalent v rozhraní .NET Framework

Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu příklady vyvolat platformy.

Viz také

Referenční dokumentace

Zpracování chyb (CRT)

_purecall