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