set_terminate
(CRT)
Installa la routine di terminazione personalizzata che deve essere chiamata da terminate
.
Sintassi
terminate_function set_terminate( terminate_function termFunction );
Parametri
termFunction
Puntatore a una funzione di terminazione personalizzata.
Valore restituito
Restituisce un puntatore alla funzione precedente registrata da set_terminate
, in modo che la funzione precedente possa essere ripristinata in un secondo momento. Se non è stata impostata alcuna funzione precedente, è possibile usare il valore restituito per ripristinare il comportamento predefinito; questo valore può essere NULL
.
Osservazioni:
La funzione set_terminate
installa termFunction
come funzione chiamata da terminate
. La funzione set_terminate
viene usata con la gestione delle eccezioni C++ e può essere chiamata in qualsiasi punto del programma prima che venga generata l'eccezione. terminate
chiama abort
per impostazione predefinita. È possibile modificare questo comportamento predefinito scrivendo una funzione di terminazione personalizzata e chiamando set_terminate
con il nome della funzione come argomento. terminate
chiama l'ultima funzione fornita come argomento a set_terminate
. Dopo aver eseguito tutte le attività di pulizia desiderate, termFunction
uscire dal programma. Se non esce (se torna al chiamante), abort
viene chiamato .
In un ambiente multithreading, le funzioni di terminazione vengono mantenute separatamente per ogni thread. Ogni nuovo thread richiede l'installazione della propria funzione di terminazione. Quindi, ogni thread è responsabile della propria gestione della terminazione.
Il tipo terminate_function
è definito in EH.H come puntatore a una funzione di terminazione definita dall'utente, termFunction
che restituisce void
. La funzione termFunction
personalizzata non può accettare argomenti e non deve tornare al chiamante. In caso affermativo, viene chiamata la funzione abort
. È possibile che non venga generata un'eccezione da termFunction
.
typedef void ( *terminate_function )( );
Nota
La funzione set_terminate
funziona solo all'esterno del debugger.
Esiste un singolo set_terminate
gestore per tutte le DLL o exes collegate dinamicamente. Anche se si chiama set_terminate
il gestore può essere sostituito da un altro gestore oppure è possibile sostituire un gestore impostato da un'altra DLL o EXE.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
set_terminate |
<eh.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Vedere l'esempio per terminate
.
Vedi anche
Routine di gestione delle eccezioni
abort
_get_terminate
set_unexpected
terminate
unexpected