次の方法で共有


set_unexpected (CRT)

unexpected を呼び出す独自の終了関数をインストールします。

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

パラメーター

  • unexpFunction
    unexpected の関数を置き換えるために作成する関数へのポインター。

戻り値

前の関数が後で復元できるように _set_unexpected に登録される前に終了関数へのポインターを返します。前の関数が設定されていない場合の既定の動作を復元するには戻り値が使用されることがあります。; この値は null になることがあります。

解説

set_unexpected の関数は unexpected によって呼び出された関数として unexpFunction をインストールします。unexpected はC++ 例外処理の実装では使用されません。unexpected_function の型はユーザー定義の予期しない関数へのポインターで unexpFunction EH.H とその戻り void 定義されます。カスタム unexpFunction の関数が呼び出し元に返される必要があります。

typedef void ( *unexpected_function )( );

既定ではunexpected の呼び出し terminate。独自の終了関数を作成し引数として関数の名前で set_unexpected を呼び出すとこの既定の動作を変更できます。unexpected は最後の関数を set_unexpected に引数として受け取る呼び出します。

set_terminate 呼び出しによってインストールするカスタム終了関数とは異なり例外が unexpFunction 内からスローできます。

マルチスレッド環境では予期しない関数はスレッドごとに別々に保持されます。それぞれの独自の関数を新しいスレッドが増します。したがって各スレッドは独自の処理を行います。

C++ 例外処理の Microsoft の現在の実装ではunexpected は terminate を既定の名前は例外処理のランタイム ライブラリによって呼び出されることはありません。特定の利点は terminate ではなく unexpected を呼び出すことはありません。

動的にリンクされる DLL または EXE の set_unexpected 一つのハンドラーがあります。; set_unexpected を呼び出した場合でもハンドラーは別の置換したり別の DLL または EXE とハンドラーを置き換えるに設定されます。

必要条件

ルーチン

必須ヘッダー

set_unexpected

<eh.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

同等の .NET Framework 関数

該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

例外処理ルーチン

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)