_set_purecall_handler, _set_purecall_handler_m
Define o manipulador para uma chamada de função virtual pura.
_purecall_handler _set_purecall_handler(
_purecall_handler function
);
_purecall_handler _set_purecall_handler_m(
_purecall_handler_mfunction
);
Parâmetros
- function
A função a ser chamado quando uma função essencialmente virtual é chamada.A _purecall_handler ou _purecall_handler_m função deve ter um tipo de retorno void.
Valor de retorno
Anterior _purecall_handler.Retorna NULL se não houvesse nenhum manipulador anterior.
Comentários
Use _set_purecall_handler se você deseja capturar funções virtuais puras e relatá-los para o usuário de forma específica ou capturá-las para fins de depuração.
Porque há um _purecall_handler de todo o processo, chamar essa função imediatamente afeta todos os threads.O chamador último em qualquer segmento define o manipulador.
Não há um único _set_purecall_handler manipulador para todas as DLLs vinculadas dinamicamente ou executáveis; mesmo se você chamar _set_purecall_handler o manipulador pode ser substituído por outro ou que você está substituindo um manipulador definido por outra DLL ou executável.
Para restaurar o comportamento padrão, chame _set_purecall_handler com umNULL argumento.
O _set_purecall_handler_m versão da função destina-se ao modo misto CRT.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_set_purecall_handler, _set_purecall_handler_m |
<stdlib.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// _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;
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.