Everything

setjmp


非局所分岐の分岐先をセットします。

[所属]

標準ライブラリ

[指定形式]

#include <setjmp.h>

int setjmp(jmp_buf env);

[戻り値]

setjmpからの戻りの場合0を返します。longjmpによって非局所分岐の場合,longjmpの第2引数valを返します。ただし,valが0 の場合,1を返します。

[詳細説明]

非局所分岐のための戻り先をenvにセットします。envには,本関数が実行された時点の環境が保存されます。

 

【setjmp.hにおけるjmp_buf型の定義】

typedef int     jmp_buf[14];

[注意事項]

本関数が保存,回復するのはコンパイラで予約したレジスタのみです。

22レジスタ・モード, または共通レジスタ・モードの関数内で本関数を呼び出し,32レジスタ・モードの関数内でr20~r24を破壊した後にlongjmpを呼び出した場合,r20~r24の値は回復しません。longjmpを呼び出す前に,r20~r24を回復しておく必要があります。

setjmp関数へのポインタを使った間接呼び出しはしないでください。