Udostępnij za pośrednictwem


_set_purecall_handler, _set_purecall_handler_m

Ustawia obsługi wywołania czystego funkcji wirtualnych.

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

Parametry

  • function
    Funkcja wywoływana, gdy wywoływana jest czysty funkcję wirtualną.A _purecall_handler lub _purecall_handler_m funkcja powinna mieć zwrócony typ void.

Wartość zwracana

Poprzedni _purecall_handler.Zwraca NULL , jeśli nie było żadnych poprzednich obsługi.

Uwagi

Użyj _set_purecall_handler Jeśli chcesz połowu czystego funkcje wirtualnych i poinformować użytkownika, w sposób szczególny lub chwyta się je na potrzeby debugowania.

Ponieważ istnieje jeden _purecall_handler dla całego procesu, wywołanie tej funkcji bezpośrednio wpływa na wszystkie wątki.Ostatni obiekt wywołujący na każdy wątek ustawia program obsługi.

Istnieje tylko jedno _set_purecall_handler obsługi dla wszystkich dynamicznie połączonej biblioteki DLL lub pliki wykonywalne; nawet jeśli zadzwonisz _set_purecall_handler nasza procedura obsługi może być zastąpione innym lub zastąpienia przez inną bibliotekę DLL lub plik wykonywalny program obsługi.

Aby przywrócić domyślne zachowanie, call _set_purecall_handler zNULL argument.

_set_purecall_handler_m Wersji funkcji jest w trybie mieszanym CRT.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

_set_purecall_handler,

_set_purecall_handler_m

<stdlib.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Przykład

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

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Błąd obsługi (CRT)

_purecall