C Tutorial/setjmp.h/longjmp

Материал из C\C++ эксперт
Перейти к: навигация, поиск

longjmp

Item Value Header file setjmp.h Declaration void longjmp(jmp_buf envbuf, int status);

  1. The longjmp() function causes program execution to resume at the point of the last call to setjmp().
  2. 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>