longjmp
元のスタックの実行環境とロケール。
void longjmp(
jmp_buf env,
int value
);
パラメーター
env
環境を格納する変数。value
setjmp の呼び出しに返す値を指定します。
解説
longjmp の関数は前に env スタックに格納されている環境およびロケールを実行 setjmp して復元します。setjmp と longjmp はローカル goto を実装する方法が用意されています ; 通常通常はこれらの規則を使用せずに呼び出しルーチンのエラー処理コードまたは復元に実行制御を渡すために使用されます。
setjmp の呼び出しは現在のスタックの環境を env に格納します。longjmp への後続の呼び出しは setjmp の対応する呼び出しの次の位置に格納された環境でコントロールを復元します。 値が setjmp の呼び出しによって返されるように実行を再開します。すべての変数の値 (レジスタ変数を除く) を定期的に受信するコントロールがアクセスできる longjmp にが呼び出されたかの値を含みます。レジスタ変数の値は予測できません。setjmp によって返される値がゼロ以外である必要があります。0 として 値を 渡す場合1 は実際の戻り値に置き換えられます。
setjmp からを呼び出した関数の前の呼び出し longjmp ; それ以外の場合結果は予測できません。
longjmp を使用する場合は次の制限を確認してください :
レジスタ変数の値が変わらないとは限りません。定期的な呼び出しの setjmp のレジスタ変数の値は適切な値に longjmp を実行すると復元されない場合があります。
割り込みが浮動小数点例外で中断引き起こされなかったら処理ルーチンから転送する longjmp を使用しないでください。この場合プログラムは longjmp で割り込みハンドラーから _fpreset の最初にを呼び出して浮動小数点演算パッケージを初期設定をやり直せば返されることがあります。
メモ は setjmp と longjmp を C++ プログラムで使用する場合は注意します。これらの関数が C++ オブジェクトのセマンティクスをサポートしないためC++ 例外処理機構を使用しても安全です。
詳細についてはsetjmp を使用してlongjmp を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
longjmp |
<setjmp.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
使用例
_fpreset の例を参照してください。
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。