Sdílet prostřednictvím


_set_purecall_handler _set_purecall_handler_m

Nastaví popisovač volání funkce čistého virtuální.

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

Parametry

  • function
    Při čisté virtuální funkce je volána funkce.A _purecall_handler nebo _purecall_handler_m funkce by měla mít typ vrácené hodnoty void.

Vrácená hodnota

Předchozí _purecall_handler.Vrátí NULL Pokud byl předchozí popisovač.

Poznámky

Použití _set_purecall_handler Pokud chcete zachytit čistého virtuálních funkcí a informovat uživatele určitým způsobem nebo jejich úlovku pro účely ladění.

Protože je jeden _purecall_handler celý proces volání této funkce okamžitě ovlivní všechny podprocesy.Poslední volajícího v jakékoli vlákno Nastaví popisovač.

Existuje jeden _set_purecall_handler obslužnou rutinu pro všechny dynamicky propojené soubory DLL nebo spustitelné soubory; i v případě, že při volání _set_purecall_handler vaše Obsluha může být nahrazena jinou nebo nahrazujete popisovač nastavit jiný DLL nebo spustitelný soubor.

Chcete-li obnovit výchozí chování volání _set_purecall_handler seNULL argument.

_set_purecall_handler_m Verze funkce je pro smíšený režim CRT.

Požadavky

Rutina

Požadované záhlaví

_set_purecall_handler,

_set_purecall_handler_m

<stdlib.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

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 Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Chyba při zpracování (CRT)

_purecall