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