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