Udostępnij za pośrednictwem


_set_purecall_handler, _set_purecall_handler_m

Ustawia program obsługi dla wywołania funkcji wirtualnych czystego.

_purecall_handler _set_purecall_handler(     _purecall_handler function );

Parametry

  • function
    Funkcja wywoływana, gdy czystego wirtualny funkcja jest wywoływana.Element _purecall_handler funkcji muszą być zwrócony typ void.

Wartość zwracana

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

Uwagi

Użyj _set_purecall_handler Jeśli chcesz łap czystego funkcje wirtualnych i poinformować użytkownika, w określony sposób lub łap je na potrzeby debugowania.

Ponieważ są określone _purecall_handler dla całego procesu, od razu wywołanie tej funkcji ma wpływ na wszystkie wątki.Element wywołujący ostatnich dotyczące dowolnego wątku Ustawia program obsługi.

Istnieje jeden _set_purecall_handler programu obsługi dla wszystkich dynamicznie połączony biblioteki DLL lub pliki wykonywalne; nawet jeśli wywołujesz _set_purecall_handler Twój program obsługi może być zastąpione innym lub chcesz zastąpić program obsługi ustawione przez innego DLL lub plik wykonywalny.

Aby przywrócić domyślne zachowanie, należy wywołać _set_purecall_handler z NULL argumentu.

Wymagania

Procedura

Wymagany nagłówek

_set_purecall_handler

< stdlib.h >

Aby uzyskać więcej informacji o 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ć standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz przykłady wywołania platformy.

Zobacz też

Informacje

Obsługa błędów (CRT)

_purecall