次の方法で共有


longjmp

元のスタックの実行環境とロケール。

void longjmp(
   jmp_buf env,
   int value 
);

パラメーター

  • env
    環境を格納する変数。

  • value
    setjmp の呼び出しに返す値を指定します。

解説

longjmp の関数は前に env スタックに格納されている環境およびロケールを実行 setjmp して復元します。setjmplongjmp はローカル goto を実装する方法が用意されています ; 通常通常はこれらの規則を使用せずに呼び出しルーチンのエラー処理コードまたは復元に実行制御を渡すために使用されます。

setjmp の呼び出しは現在のスタックの環境を env に格納します。longjmp への後続の呼び出しは setjmp の対応する呼び出しの次の位置に格納された環境でコントロールを復元します。 値が setjmp の呼び出しによって返されるように実行を再開します。すべての変数の値 (レジスタ変数を除く) を定期的に受信するコントロールがアクセスできる longjmp にが呼び出されたかの値を含みます。レジスタ変数の値は予測できません。setjmp によって返される値がゼロ以外である必要があります。0 として 値を 渡す場合1 は実際の戻り値に置き換えられます。

setjmp からを呼び出した関数の前の呼び出し longjmp ; それ以外の場合結果は予測できません。

longjmp を使用する場合は次の制限を確認してください :

  • レジスタ変数の値が変わらないとは限りません。定期的な呼び出しの setjmp のレジスタ変数の値は適切な値に longjmp を実行すると復元されない場合があります。

  • 割り込みが浮動小数点例外で中断引き起こされなかったら処理ルーチンから転送する longjmp を使用しないでください。この場合プログラムは longjmp で割り込みハンドラーから _fpreset の最初にを呼び出して浮動小数点演算パッケージを初期設定をやり直せば返されることがあります。

    メモ は   setjmplongjmp を C++ プログラムで使用する場合は注意します。これらの関数が C++ オブジェクトのセマンティクスをサポートしないためC++ 例外処理機構を使用しても安全です。

詳細についてはsetjmp を使用してlongjmp を参照してください。

必要条件

ルーチン

必須ヘッダー

longjmp

<setjmp.h>

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

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

使用例

_fpreset の例を参照してください。

同等の .NET Framework 関数

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

参照

関連項目

プロセス制御と環境制御

setjmp