Поделиться через


setjmp

Сохраняет текущее состояние программы.

int setjmp(
   jmp_buf env 
);

Параметры

  • env
    Переменная для хранения среды.

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

Возвращает 0 после сохранения среды стека. Если setjmp возвращается в результате вызова longjmp, она возвращает аргумент value функции longjmp, или если аргумент value функции longjmp равен 0, setjmp возвращает 1. Нет какого-либо возврата ошибки.

Заметки

Функция setjmp сохраняет среду стека, которую можно впоследствии восстановить с помощью longjmp. Когда setjmp и longjmp используются вместе, они предоставляют способ выполнения нелокального goto. Обычно они используются для передачи управления выполнением в код обработки ошибок или восстановления в вызванной ранее подпрограмме без использования обычных соглашений вызова или возврата.

Вызов setjmp сохраняет текущую среду стека в env. Последующий вызов longjmp восстанавливает сохраненную среду и возвращает контроль управления в точку, следующей сразу за соответствующим вызовом setjmp. Все переменные (за исключением переменных регистра), доступные для получившей контроль управления подпрограммы, содержат те значения, которые они имели при вызове longjmp.

Невозможно использовать setjmp, чтобы перейти из машинного кода в управляемый.

Бумага для заметок   setjmp и longjmp не поддерживают семантики объекта C++. В программах на C++ используйте механизм обработки исключений C++.

Дополнительные сведения см. в разделе Использование setjmp и longjmp.

Требования

Подпрограмма

Обязательный заголовок

setjmp

<setjmp.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

Посмотрите следующий пример для _fpreset.

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Управление процессами и средой

longjmp

_setjmp3