Freigeben über


set_terminate (CRT)

Installiert Ihre Beendigungsroutine, die von terminate aufgerufen werden soll.

Syntax

terminate_function set_terminate( terminate_function termFunction );

Parameter

termFunction
Zeiger auf eine Funktion zum Beenden, die Sie schreiben.

Rückgabewert

Gibt einen Zeiger auf die vorherige Funktion zurück, die von set_terminate registriert wurde, sodass die vorherige Funktion später wiederhergestellt werden kann. Wenn keine vorherige Funktion festgelegt wurde, kann der Rückgabewert verwendet werden, um das Standardverhalten wiederherzustellen. Dieser Wert kann sein NULL.

Hinweise

Die set_terminate-Funktion installiert termFunction als Funktion, die von terminate aufgerufen wird. set_terminate wird mit C++-Ausnahmebehandlung verwendet und kann an einer beliebigen Stelle im Programm aufgerufen werden, bevor die Ausnahme ausgelöst wird. terminate ruft standardmäßig abort auf. Sie können dieses Standardverhalten ändern, indem Sie eine benutzerdefinierte Beendigungsfunktion schreiben und set_terminate mit dem Namen Ihrer Funktion als Argument aufrufen. Die terminate-Routine ruft immer die letzte Funktion auf, die für set_terminate als Argument angegeben wurde. Nachdem sie alle gewünschten Bereinigungsaufgaben ausgeführt hat, termFunction sollte das Programm beendet werden. Wenn er nicht beendet wird (wenn er zum Aufrufer zurückkehrt), abort wird aufgerufen.

In einer Multithreadumgebung werden die Beendigungsfunktionen für jeden Thread separat verwaltet. Jeder neue Thread muss eine eigene Beendigungsfunktion installieren. Daher ist jeder Thread für die eigene Beendigungsbehandlung verantwortlich.

Der terminate_function-Typ ist in EH.H als Zeiger auf eine benutzerdefinierte Beendigungsfunktion definiert, termFunction, die void zurückgibt. Ihre benutzerdefinierte Funktion termFunction kann keine Argumente annehmen und sollte nicht zum Aufrufer zurückkehren. Ist dies der Fall, wird abort aufgerufen. Eine Ausnahme kann nicht aus termFunction heraus ausgelöst werden.

typedef void ( *terminate_function )( );

Hinweis

Die set_terminate-Funktion kann nur außerhalb des Debuggers verwendet werden.

Es gibt einen einzelnen set_terminate Handler für alle dynamisch verknüpften DLLs oder EXEs. Auch wenn Sie den Handler aufrufen set_terminate , wird möglicherweise durch einen anderen ersetzt, oder Sie ersetzen einen Handler, der durch eine andere DLL oder EXE festgelegt ist.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header
set_terminate <eh.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Ein Beispiel hierfür finden Sie unter terminate.

Siehe auch

Ausnahmebehandlungsroutinen
abort
_get_terminate
set_unexpected
terminate
unexpected