_set_purecall_handler, _set_purecall_handler_m
Establece el controlador para una llamada de función virtual pura.
_purecall_handler _set_purecall_handler(
_purecall_handler function
);
_purecall_handler _set_purecall_handler_m(
_purecall_handler_mfunction
);
Parámetros
- function
Función que se llamará cuando se llama a una función virtual pura.Una función de _purecall_handler o de _purecall_handler_m debe tener un tipo de valor devuelto void.
Valor devuelto
_purecall_handleranterior.Devuelve NULL si no existe ningún controlador anterior.
Comentarios
Utilice _set_purecall_handler si desea detectar funciones virtuales puras y para seleccione al usuario de forma específica o para detectarlas para fines de depuración.
Dado que hay un _purecall_handler para el proceso completo, llamar a esta función inmediatamente afecta a todos los subprocesos.El llamador pasa en cualquier subproceso establece el controlador.
Hay solo controlador de _set_purecall_handler para todos los archivos DLL o ejecutables dinámicamente vinculados; incluso si llama a _set_purecall_handler el controlador puede reemplazar por otro o que se está reemplazando un controlador establecido por otra DLL o ejecutable.
Para restaurar el comportamiento predeterminado, llame a _set_purecall_handler conun argumento deNULL .
La versión de _set_purecall_handler_m de la función es para el modo mixto CRT.
Requisitos
rutina |
Encabezado necesario |
---|---|
_set_purecall_handler, _set_purecall_handler_m |
<stdlib.h> |
Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.
Ejemplo
// _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;
}
Equivalente en .NET Framework
No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.