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

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

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


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 を参照してはならない。
    }
}

実行結果:

x == 10, y == 40, g == 400

関連

呼び出し環境の保存を setjmp関数、復元を longjmp関数で行う。

解説章


参考リンク


更新履歴

’2018/4/26 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る