Книга: Язык программирования Си. Издание 3-е, исправленное
B8. Дальние переходы:
B8. Дальние переходы: <setjmp.h>
Объявления в <setjmp.h> предоставляют способ отклониться от обычной последовательности "вызов - возврат"; типичная ситуация - необходимость вернуться из "глубоко вложенного" вызова функции на верхний уровень, минуя промежуточные возвраты.
int setjmp(jmp_buf env);
Макрос setjmp сохраняет текущую информацию о вызовах в env для последующего ее использования в longjmp. Возвращает нуль, если возврат осуществляется непосредственно из setjmp, и не нуль, если - от последующего вызова longjmp. Обращение к setjmp возможно только в определенных контекстах, в основном это проверки в if, switсh и циклах, причем только в простых выражениях отношения.
if (setjmp() == 0)
/* после прямого возврата */
else
/* после возврата из longjmp */
void longjmp(jmp_buf env, int val);
longjmp восстанавливает информацию, сохраненную в самом последнем вызове setjmp, по информации из env; выполнение программы возобновляется, как если бы функция setjmp только что отработала и вернула ненулевое значение val. Результат будет непредсказуемым, если в момент обращения к longjmp функция, содержащая вызов setjmp, уже "отработала" и осуществила возврат. Доступные ей объекты имеют те значения, которые они имели в момент обращения к longjmp; setjmp не сохраняет значений.
- B1. Ввод-вывод: ‹stdio.h›
- B2. Проверки класса символа: ‹ctype.h›
- B3. Функции, оперирующие со строками:
- B4. Математические функции:
- B5. Функции общего назначения:
- B6. Диагностика:
- B7. Списки аргументов переменной длины:
- B8. Дальние переходы:
- B9. Сигналы:
- B10. Функции даты и времени: ‹time.h›
- B11. Зависящие от реализации пределы: и
- 12.5. Нелокальные переходы
- 5.6. Переходы
- 2. Переходы в CSS
- 2.2.2.3 Переходы из состояния в состояние
- Что такое CSS-переходы
- 6.1 СОСТОЯНИЯ ПРОЦЕССА И ПЕРЕХОДЫ МЕЖДУ НИМИ
- Переходы между состояниями
- 6.5. Действия и переходы
- Как использовать плавные переходы
- Переходы по запросам
- Резюме: переходы в программах
- Переходы в программе