set_terminate
(CRT)
安裝您要由 terminate
呼叫的專屬終止常式。
語法
terminate_function set_terminate( terminate_function termFunction );
參數
termFunction
所撰寫之終止函式的指標。
傳回值
傳回 set_terminate
所註冊之先前函式的指標,因此,稍後可以還原先前函式。 如果未設定任何先前的函式,則傳回值可用來還原預設行為;這個值可能是 NULL
。
備註
set_terminate
函式透過 terminate
呼叫時會安裝 termFunction
。 set_terminate
是與 C++ 例外狀況處理搭配使用,而且可以在擲回例外狀況之前於程式中的任何位置呼叫。 terminate
預設會呼叫 abort
。 您可以變更這個預設值,方法是撰寫您自己的終止函式,並使用您的函式名稱作為引數呼叫 set_terminate
。 terminate
會呼叫指定為 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