[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Функция setjmp запоминает текущее состояние стека (в смысле текущее значение указателя) и, наверно, регистров в структуре (глобальной), которая передается ей в качестве параметра.
longjmp восстанавливает из этой структуры указатель стека и регистры.
Выполнение программы начинается с той точки как будто произошел выход из setjmp. При выходе из setjmp можно узнать что это было, первый вызов для запоминания стека или результат выполнения longjmp.
Это годится если точка куда нужно перейти стоит выше по дереву вызовов, чем место где вызывается longjmp. Например на начало функции main.
Функции входят в стандартную библиотеку С.
E-mail: info@telesys.ru