FreeBSD Manual Pages
std::jmp_buf(3) C++ Standard Libary std::jmp_buf(3) NAME std::jmp_buf - std::jmp_buf Synopsis Defined in header <csetjmp> typedef /* unspecified */ jmp_buf; The std::jmp_buf type is an array type suitable for storing informa- tion to restore a calling environment. The stored information is sufficient to restore execution at the correct block of the program and invocation of that block. The state of floating-point status flags, or open files, or any other data is not stored in an object of type jmp_buf. Example // Run this code #include <iostream> #include <csetjmp> std::jmp_buf my_jump_buffer; [[noreturn]] void foo(int count) { std::cout << "foo(" << count << ") called\n"; std::longjmp(my_jump_buffer, count+1); // setjmp() will return count+1 } int main() { volatile int count = 0; // modified locals in setjmp scope must be volatile if (setjmp(my_jump_buffer) != 5) { // equality against constant expression in an if count = count + 1; // ++count, count += 1, etc on 'volatile'-qualified // left operand are deprecated since C++20 (P1152) foo(count); // This will cause setjmp() to exit } } Output: foo(1) called foo(2) called foo(3) called foo(4) called See also setjmp saves the context (function macro) longjmp jumps to specified location (function) http://cppreference.com 2022.07.31 std::jmp_buf(3)
NAME | Synopsis | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::jmp_buf&sektion=3&manpath=FreeBSD+Ports+15.0>
