longjmp()
#include <setjmp.h> void longjmp(jmp_buf envbuf, int status);
Описание
Возобновляет выполнение программы с места последнего обращения к функции setjmp()
Функция longjmp() возобновляет выполнение программы с места последнего обращения к функции setjmp(). Таким образом, функции longjmp() и setjmp() предоставляют средство передачи управления между функциями. Обратите внимание на необходимость включения заголовка <setjmp.h>(в языке C++ используется заголовок <csetjmp>). Функция longjmp() восстанавливает состояние стека, сохраненное в буфере envbuf с помощью функции setjmp(). В результате выполнение программы возобновляется с оператора, следующего за вызовом функции setjmp(). Иначе говоря, компьютер вводится в "заблуждение": он считает, будто управление программой не выходило за пределы функции, которая вызвала функцию setjmp().(Выражаясь образно, функция longjmp() "искривляет" время и пространство(памяти), чтобы вернуться в предыдущую точку программы, не выполняя нормальный процесс возврата из функции.) Буфер evnbuf имеет тип jmp_buf, который определен в заголовке <setjmp.h>. Этот буфер должен быть установлен посредством обращения к функции setjmp() до вызова функции longjmp(). Значение параметра status становится возвращаемым значением функции setjmp(), и его можно опросить, чтобы определить "происхождение" длинного перехода. Единственным недопустимым значением является нуль. Функция setjmp() возвращает нуль в том случае, когда она вызывается непосредственно программой, а не косвенно, путем выполнения функции longjmp(). В основном, функция longjmp() используется для возврата из глубоко вложенного набора функций при возникновении ошибок. |
Нет комментариев. Оставить комментарий: |