#include #include jmp_buf buffer; void h( int val ) { std::cout << "h::val = " << val << std::endl; longjmp( buffer, val ); std::cout << "h::never execute\n"; } void g( int val ) { std::cout << "g::val = " << val << std::endl; int myval = setjmp( buffer ); if ( myval == 0 ) { h( val + 1 ); return; } std::cout << "g::myval = " << myval << std::endl; } void f() { int val = setjmp( buffer ); std::cout << "f::val = " << val << std::endl; if ( val == 0 ) g( 10 ); std::cout << "f::val = " << val << std::endl; } int main() { f(); //longjmp(buffer,13); }