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