set_terminate (CRT)
更新 : 2007 年 11 月
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 型は、void を返す termFunction というユーザー定義の終了関数へのポインタとして EH.H で定義されます。独自の終了関数 termFunction は引数を受け取りません。また、呼び出し側に戻ることもできません。その場合は、abort 関数が呼び出されます。例外を termFunction の内部からスローすることはできません。
typedef void ( *terminate_function )( );
メモ : |
---|
set_terminate 関数はデバッガ内では使用できません。 |
動的にリンクされるすべての DLL や EXE に対して、set_terminate ハンドラは 1 つだけです。そのため、set_terminate を呼び出しても、ハンドラが別のハンドラに置き換えられたり、別の DLL または EXE で設定されたハンドラを置き換えたりする場合があります。
この関数は /clr:pure ではサポートされません。
必要条件
ルーチン |
必須ヘッダー |
---|---|
set_terminate |
<eh.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「terminate」の例を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。