C言語編 標準ライブラリのリファレンス jmp_buf

先頭へ戻る

jmp_buf

概要 呼び出し環境を保存するための型
ヘッダ setjmp.h
形式 typedef int jmp_buf[16];
詳細 setjmp関数を使って呼び出し環境を保存しておくための型。処理系によって異なるが、配列型であることは確かである。
注意
使用例
#include <stdio.h>
#include <setjmp.h>

jmp_buf g_env;
int g = 100;

void func(void)
{
    g *= 2;
    longjmp( g_env, 1 );
}

int main(void)
{
    int x = 10;
    volatile int y = 20;

    if( setjmp( g_env ) == 0 ){
        /* 普通に setjmp関数が呼び出された後 */
        y *= 2;
        g *= 2;
        func();
    }
    else{
        /* longjmp関数によって復元された後 */

        printf( "x == %d, y == %d, g == %d\n", x, y, g );
        /* もし、x の値が setjmp関数の呼び出しから longjmp関数の呼び出しの間で
           書き換えられていた場合、ここで x を参照してはならない。
        */
    }

    return 0;
}

実行結果:

x == 10, y == 40, g == 400
関連 呼び出し環境の保存を setjmp関数、復元を longjmp関数で行う。
解説章


参考リンク

更新履歴

'2018/4/26 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS