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;
}
出力
何らかのエラー
エラーから復帰しました