【C言語】標準ライブラリ【setjmp.h】 - 非局所分岐
【C言語】
標準ライブラリ【setjmp.h】
非局所分岐
非局所分岐 <setjmp.h>
関数の枠組みを越えた分岐(ジャンプ)を制御するための型・マクロ・関数の宣言定義。
jmp_buf | setjmp マクロが実行環境を保存するための型 |
setjmp | longjmp 関数による復帰を可能にするために実行環境を保存するためのマクロ(しばしば直接、関数で実装されているが、標準ではマクロとされている。POSIXではマクロか関数かは指定されない、としている) |
longjmp | setjmp マクロで保存された環境への復帰 |
<setjmp.h> を必要とする関数群
- [ setjmp ] : longjmp関数に備えて状態を保存する。
-
関数型 : int setjmp(jmp_buf env);
引数 : ジャンプ先の状態を格納する変数のアドレス
戻り値 : 最初に呼ばれたときは0、longjmpで戻ったときはその値。
機能 : longjmp関数に備えて状態を保存する。
注意 : プログラムの流れをグチャグチャにする凶悪な関数であり、よほどの事情でもない限り使用してはいけない。
- [ longjmp ] : 関数間をまたぐ広域ジャンプを行う
-
関数型 : void longjmp(jmp_buf env, int val);
引数 : ジャンプ先の状態が格納された変数のアドレス、任意の戻り値
戻り値 : なし
機能 : 関数間をまたぐ広域ジャンプを行う
注意 : プログラムの流れをグチャグチャにする凶悪な関数であり、よほどの事情でもない限り使用してはいけない。