The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

A.10 Глобальные переходы— setjmp.h

A.10 Глобальные переходы— setjmp.h

Предыдущая  Содержание  Следующая V*D*V

#include <setjmp.h>

 

jmp_buf onError;

int val;

 

    if (val = setjmp(onError))

        обработка ошибки

    else

        первый вызов

 

    ...

 

    longjmp(onError, val);

 

Эти функции используются, чтобы выполнить глобальный переход из одной функции обратно в другую, которая была вызвана ранее и всё ещё активна. Во время первого вызова setjmp() записывает местоположение в jmp_buf и возвращает ноль. Позже longjmp() вернётся к этому местоположению; тогда setjmp() возвращает любое значение, которое было определено как второй параметр longjmp(); если это значение равно нулю, то setjmp() возвратит единицу.

Есть дополнительные условия: контекст, из которого был вызвана setjmp(), всё ещё должен быть активным; этот контекст не может быть очень сложным; значения переменных не восстанавливаются; переходить обратно к точке, из которой был вызван longjmp(), не возможен; и так далее. Однако, уровни рекурсии обрабатываются верно.

 

Предыдущая  Содержание  Следующая