_set_purecall_handler, _set_purecall_handler_m
Imposta il gestore per una chiamata di funzione virtuale pure.
_purecall_handler _set_purecall_handler(
_purecall_handler function
);
_purecall_handler _set_purecall_handler_m(
_purecall_handler_mfunction
);
Parametri
- function
La funzione da chiamare quando una funzione virtuale pura è denominata.In _purecall_handler o _purecall_handler_m la funzione deve avere un tipo restituito void.
Valore restituito
il precedente _purecall_handler.Restituisce NULL se non esistesse un gestore precedente.
Note
utilizzo _set_purecall_handler se si desidera rilevare le funzioni virtuali pure e per riferirli all'utente in una modalità specifica o per rilevarle per eseguire il debug.
Poiché c'è uno _purecall_handler per l'intero processo, chiamare la funzione subito influisce su tutti i thread.L'ultimo chiamante in qualsiasi thread imposta il gestore.
Esiste un singolo _set_purecall_handler gestore per tutte le DLL o file eseguibili collegati in modo dinamico; anche se si chiama _set_purecall_handler il gestore può essere sostituito da un altro o che si sta sostituendo un gestore impostato da un'altra DLL o file eseguibile.
Per ripristinare il comportamento predefinito, chiamata _set_purecall_handler conNULL argomento.
_set_purecall_handler_m la versione della funzione è per CRT in modalità mista.
Requisiti
routine |
Intestazione di associazione |
---|---|
_set_purecall_handler, _set_purecall_handler_m |
<definito> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Esempio
// _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 .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.