Share via


setjmp

プログラムの現在の状態を保存します。

int setjmp(
   jmp_buf env 
);

パラメーター

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

戻り値

スタックの環境を格納すると 0 を返します。setjmp が longjmp の呼び出しの結果として返す場合longjmp の value の引数または longjmp の value の引数が 0 の場合setjmp から 1. を返します。エラーの戻り値はありません。

解説

setjmp の関数は longjmp を使用すると後で復元できるスタックの環境を格納します。一緒に使用するとsetjmp と longjmp はローカル goto を実装する方法を示します。呼び出す通常標準を使用せずに呼び出しルーチンのエラー処理コードまたは復元に実行制御を渡すにはこれらの規則が使用されます。

setjmp の呼び出しは env に現在のスタックの環境を格納します。longjmp への後続の呼び出しは setjmp の対応するの呼び出しの直後の位置に格納された環境でコントロールを復元します。定期的な受信するコントロールにアクセスできるすべての変数をレジスタ変数 (を除く) longjmp にが呼び出されたかの値を含みます。

ネイティブ コードからマネージ コードにジャンプするために setjmp を使用することはできません。

メモ   setjmp と longjmp は C++ オブジェクトのセマンティクスをサポートしていません。C++ プログラムではC++ 例外処理機構を使用します。

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

必要条件

ルーチン

必須ヘッダー

setjmp

<setjmp.h>

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

使用例

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

同等の .NET Framework 関数

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

参照

関連項目

プロセス制御と環境制御

longjmp

_setjmp3