次の方法で共有


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 型は、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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

例外処理ルーチン

abort

_get_terminate

set_unexpected (CRT)

terminate (CRT)

unexpected (CRT)