Share via


set_terminate (CRT)

安裝您要由 terminate 呼叫的專屬終止常式。

語法

terminate_function set_terminate( terminate_function termFunction );

參數

termFunction
所撰寫之終止函式的指標。

傳回值

傳回 set_terminate 所註冊之先前函式的指標,因此,稍後可以還原先前函式。 如果未設定任何先前的函式,則傳回值可用來還原預設行為;這個值可能是 NULL

備註

set_terminate 函式透過 terminate 呼叫時會安裝 termFunctionset_terminate 是與 C++ 例外狀況處理搭配使用,而且可以在擲回例外狀況之前於程式中的任何位置呼叫。 terminate 預設會呼叫 abort。 您可以變更這個預設值,方法是撰寫您自己的終止函式,並使用您的函式名稱作為引數呼叫 set_terminateterminate 會呼叫指定為 set_terminate 引數的最後一個函式。 執行任何所需的清除工作之後, termFunction 應該結束程式。 如果它未結束(如果它返回其呼叫端), abort 則會呼叫 。

在多執行緒環境中,會分別維護每個執行緒的終止函式。 每個新執行緒都需要安裝它自己的終止函式。 因此,每個執行緒都會負責它自己的終止處理。

terminate_function 類型定義於 EH.H 中,作為傳回 void 之使用者定義終止函式 termFunction 的指標。 您的自訂函 termFunction 式不可以接受任何引數,而且不應該傳回其呼叫端。 如果是這樣的話,會呼叫 abort。 可能不會從 termFunction 擲回例外狀況。

typedef void ( *terminate_function )( );

注意

set_terminate 函式僅作用於偵錯工具外部。

所有動態連結 DLL 或 EXE 都有單 set_terminate 一處理程式;即使您呼叫 set_terminate 您的處理常式可能由另一個 DLL 或 EXE 取代,或者您可能取代另一個 DLL 或 EXE 所設定的處理常式。

根據預設,此函式的全域狀態會限定于應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。

需求

常式 必要的標頭
set_terminate <eh.h>

如需相容性詳細資訊,請參閱相容性

範例

請參閱 的 terminate 範例。

另請參閱

例外狀況處理常式
abort
_get_terminate
set_unexpected
terminate
unexpected