Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама
Актуальная танк 300 цена - смотрите предложения у официального дилера.

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

longjmp - длинный переход

Описание

      Эти  функции  позволяют  осуществлять  переходы  между
      функциями. Они могут быть полезны при обработке ошибок
      или прерываний,  происшедших в низкоуровневых процеду-
      рах программы.
      setjmp сохраняет окружение стека в переменной  env для
      дальнейшего использования в longjmp.
      longjmp восстанавливает окружение,  сохраненное  ранее
      посредством setjmp в буфере env. value, возвращаемое в
      окружение, как бы поставляет setjmp.
      ЗАМЕЧАНИЕ:  Окружение должно быть зафиксировано с ис-
                  пользованием setjmp, вызываемой из той же
                  функции, которая содержит обращение к фу-
                  нкции longjmp, или из "родительской", т.е.
                  функции,  содержащей обращение к той, что
                  вызывает longjmp.
      После завершения  longjmp выполнение программы продол-
      жается, как если бы соответствующее обращение к setjmp
      возвратило value. value никогда не будет 0. Если value
      передано как 0, будет возвращено значение 1.

Использование

      #include <setjmp.h>
      void longjmp (jmp_buf env, int value);      /* ANSI */
      int setjmp (jmp_buf env);                   /* ANSI */

Возвращаемое значение

      setjmp  возвращает  0.  longjmp не имеет возвращаемого
      значения.

Пример

      #include <setjmp.h>
      #include <stdio.h>
      void doscall(void);
      jmp_buf environment;
      int error_val = -1;
      main()
      {
        int error code;
        error_code = setjmp(environment);
        if (error_code !=0)
            {
              printf("Вызван longjmp\n");
              exit(1);
            }
        printf("Вызван setjmp\n");
        doscall();
      }
      doscall()
      {
        longjmp(environment, error_val);
      }

оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог