Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help