C Tutorial/setjmp.h/longjmp
longjmp
Item Value Header file setjmp.h Declaration void longjmp(jmp_buf envbuf, int status);
- The longjmp() function causes program execution to resume at the point of the last call to setjmp().
- longjmp() and setjmp() provide a means of jumping between functions.
The most common use of longjmp() is to return from a deeply nested set of routines when an error occurs. (C: The Complete Reference, Fourth Edition by Herbert Schildt McGraw-Hill/Osborne 2000 ISBN-10: 0072121246, ISBN-13: 978-0072121247)
<source lang="cpp">#include <setjmp.h>
#include <stdio.h> jmp_buf ebuf; void f2(void); int main(void) { int i; printf("1 "); i = setjmp(ebuf); if(i == 0) { f2(); printf("This will not be printed."); } printf("%d", i); return 0; } void f2(void) { printf("2 "); longjmp(ebuf, 3); }</source>