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 )( );
Note
set_terminate
関数はデバッガーの外部でのみ機能します。
動的にリンクされているすべての DLL または EXE に対して 1 つの set_terminate
ハンドラーがあります。 set_terminate
呼び出した場合でも、ハンドラーが別の DLL または EXE によって設定されたハンドラーに置き換えられる場合もあります。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
set_terminate |
<eh.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
terminate
の例を参照してください。
関連項目
例外処理ルーチン
abort
_get_terminate
set_unexpected
terminate
unexpected