set_terminate
(CRT)
Instaluje własną procedurę kończenia, która ma być wywoływana przez terminate
program .
Składnia
terminate_function set_terminate( terminate_function termFunction );
Parametry
termFunction
Wskaźnik do funkcji zakończenia, którą piszesz.
Wartość zwracana
Zwraca wskaźnik do poprzedniej funkcji zarejestrowanej przez set_terminate
, aby można było przywrócić poprzednią funkcję później. Jeśli nie ustawiono żadnej poprzedniej funkcji, wartość zwracana może służyć do przywrócenia domyślnego zachowania; ta wartość może mieć wartość NULL
.
Uwagi
Funkcja set_terminate
jest instalowana termFunction
jako funkcja wywoływana przez terminate
funkcję . set_terminate
jest używany z obsługą wyjątków języka C++ i może być wywoływany w dowolnym momencie w programie przed zgłoszeniem wyjątku. terminate
domyślnie wywołuje abort
. Tę wartość domyślną można zmienić, pisząc własną funkcję zakończenia i wywołując set_terminate
przy użyciu nazwy funkcji jako argumentu. terminate
wywołuje ostatnią funkcję podaną jako argument .set_terminate
Po wykonaniu żądanych zadań termFunction
oczyszczania program powinien zakończyć działanie programu. Jeśli nie zostanie zakończona (jeśli powróci do elementu wywołującego), abort
zostanie wywołana.
W środowisku wielowątkowym funkcje zakończenia są obsługiwane oddzielnie dla każdego wątku. Każdy nowy wątek musi zainstalować własną funkcję zakończenia. W związku z tym każdy wątek jest odpowiedzialny za własną obsługę kończenia.
Typ terminate_function
jest zdefiniowany w EH. H jako wskaźnik do funkcji zakończenia zdefiniowanej przez użytkownika, termFunction
która zwraca wartość void
. Funkcja termFunction
niestandardowa nie może przyjmować żadnych argumentów i nie powinna zwracać się do elementu wywołującego. Jeśli tak się dzieje, abort
jest wywoływana. Wyjątek może nie zostać zgłoszony z poziomu elementu termFunction
.
typedef void ( *terminate_function )( );
Uwaga
Funkcja set_terminate
działa tylko poza debugerem.
Istnieje jedna set_terminate
procedura obsługi dla wszystkich dynamicznie połączonych bibliotek DLL lub EXE. Nawet jeśli wywołasz set_terminate
program obsługi, może zostać zastąpiony przez inną lub można zastąpić program obsługi ustawiony przez inną bibliotekę DLL lub EXE.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
set_terminate |
<eh.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu terminate
.
Zobacz też
Procedury obsługi wyjątków
abort
_get_terminate
set_unexpected
terminate
unexpected