Compartilhar via


_set_purecall_handler, _set_purecall_handler_m

Define o manipulador de uma telefonar 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

O anterior_purecall_handler. RetornaNULL Se não houvesse nenhum manipulador anterior.

Comentários

Use _set_purecall_handler Se você deseja capturar funções virtual puras e relatá-los para o usuário de forma específica ou capturá-los para fins de depuração.

Porque há um _purecall_handler para o processo inteiro, chamar essa função imediatamente afeta todos os threads. O chamador último em qualquer thread define o manipulador.

Há um único _set_purecall_handler manipulador para todos os executáveis ou DLLs dynamitelefonary vinculado; mesmo se você telefonar _set_purecall_handler o manipulador pode ser substituído por outro ou que você está substituindo um manipulador definido pelo outro executável ou DLL.

To restore default behavior, call _set_purecall_handler with aNULL argument.

The _set_purecall_handler_m versão da função é para o 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;
}

In _purecall_handler.

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Erro Handling (CRT)