C-standard-library-c-macro-setjmp
提供:Dev Guides
Cライブラリマクロ-setjmp()
説明
Cライブラリマクロ* int setjmp(jmp_buf environment)は、関数 longjmp()が後で使用できるように、現在の *environment を変数環境に保存します。 このマクロがマクロ呼び出しから直接戻る場合、ゼロを返しますが、* longjmp()*関数呼び出しから戻る場合、2番目の引数としてlongjmpに渡された値を返します。
宣言
以下は、setjmp()マクロの宣言です。
int setjmp(jmp_buf environment)
パラメーター
- environment -これは、環境情報が保存されているjmp_buf型のオブジェクトです。
戻り値
このマクロは複数回返す場合があります。 最初に、直接呼び出しで、常にゼロを返します。 環境に設定された情報でlongjmpが呼び出されると、マクロは再び戻ります。現在、2番目の引数としてlongjmpに渡された値を返します。
例
次の例は、setjmp()マクロの使用法を示しています。
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int main () {
int val;
jmp_buf env_buffer;
/*save calling environment for longjmp*/
val = setjmp( env_buffer );
if( val != 0 ) {
printf("Returned from a longjmp() with value = %s\n", val);
exit(0);
}
printf("Jump function call\n");
jmpfunction( env_buffer );
return(0);
}
void jmpfunction(jmp_buf env_buf) {
longjmp(env_buf, "finddevguides.com");
}
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
Jump function call
Returned from a longjmp() with value = finddevguides.com