Skip to content

Latest commit

 

History

History
54 lines (42 loc) · 1.09 KB

jmp_buf.md

File metadata and controls

54 lines (42 loc) · 1.09 KB

jmp_buf

  • std[meta namespace]
  • csetjmp[meta header]
  • type-alias[meta id-type]
namespace std {
  using jmp_buf = unspecified;
}
  • unspecified[italic]

概要

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;
}
  • std::jmp_buf[color ff0000]
  • std::longjmp[link longjmp.md]
  • setjmp[link setjmp.md]

出力

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

関連項目