次の方法で共有


set_unexpected (CRT)

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

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

パラメーター

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

戻り値

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

解説

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

typedef void ( *unexpected_function )( );

既定で、unexpected の呼び出し terminate。 独自の終了関数を記述し、引数として関数の名前 set_unexpected を呼び出して、この既定の動作を変更できます。 unexpected は 最後の関数を set_unexpectedに引数としてから呼び出します。

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

マルチスレッド環境では、予期しない関数は、スレッドごとに別々に保持されます。 それぞれの独自の予期しない関数をインストールする新しいスレッドで行う必要があります。 したがって、各スレッドには、独自の予期しない処理があります。

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

すべての動的にリンクされたな 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)