最終更新日時: 2026年04月29日 16時19分25秒 (JST)
K10-K10 が更新

履歴 編集

type-alias
<csetjmp>

# std::jmp_buf

    namespace std {
      using jmp_buf = unspecified;
    }

## 概要

`jmp_buf`は、非ローカルジャンプ（関数を跨いだジャンプ）を実現するために、現在の実行環境を保存するための配列型である。

`setjmp()`マクロによって現在の環境がこの型に保存され、後に`longjmp()`関数がその環境を復元するために使用される。

## 例

    #include <iostream>
    #include <csetjmp>

    std::jmp_buf env;

    void inner_function() {
      std::cout << "何らかのエラー" << std::endl;
      std::longjmp(env, 42);
    }

    int main () {
      if (setjmp(env) == 0) {
        inner_function();
      } else {
        std::cout << "エラーから復帰しました" << std::endl;
      }

      return 0;
    }

### 出力

    何らかのエラー
    エラーから復帰しました

## 関連項目

- `longjmp()`
- `setjmp()`