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

Vedere anche

Riferimenti

Gestione degli errori (CRT)

_purecall