C Tutorial/setjmp.h/longjmp

Материал из C\C++ эксперт
Версия от 10:32, 25 мая 2010; Admin (обсуждение | вклад) (1 версия: Импорт контента...)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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)


#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);
  }