Программирование на C и C++

Онлайн справочник программиста на C и C++

setjmp

int setjmp(jmp_buf envbuf)

Прототип: 
Описание: 

Функция setjmp() сохраняет содержимое стека системы в буфере envbuf для дальнейшего ис­пользования функцией longjmp().

Функция setjmp() возвращает при вызове ноль. Однако при вызове функции longjmp() этой последней передается аргумент (всегда ненулевой), который является возвращаемым функцией setjmp() значением.

Для дополнительной информации следует обратиться к функции longjmp().

Пример: 
Следующая программа выводит «1 2 3»:
#include <stdio.h>
#include <setjmp.h>

jmp_buf ebuf;
void f2 (void);

int main(void)
{
char first=l;
int i;
printf("1 ");
i = setjmp(ebuf);
if (first) {
first =! first;
f2();
printf ("this will not be printed");
}
printf("%d", i);
return 0;
}

void f2(void)
{
printf("2 ");
longjmp(ebuf, 3);
}

Смешанные функции