最終更新日時(UTC):
が更新

履歴 編集

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;
}

出力

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

関連項目