setjmp.h

setjmp.h
Стандартная библиотека
языка программирования С

setjmp.h — заголовочный файл стандартной библиотеки языка Си, объявляющий макросы и тип данных для нелокальных переходов.[1] В Си существует оператор goto, позволяющий переходить в любое место внутри блока, однако переход в другой блок с его помощью невозможен.

Типы данных

Библиотека объявляет тип данных jmp_buf, который является массивом и который может использоваться для сохранения и восстановления контекста выполнения программы. Тип не включает в себя информацию о контексте вычислений с плавающей запятой, статусе открытых файлов или иных компонентов.[1]

Функции (макросы)

#include <setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);

Стандарт объявляет две функции setjmp (может быть макросом) и longjmp, для сохранения и восстановления контекста соответственно. Функция setjmp сохраняет контекст в переменной env и возвращает 0 если это был прямой вызов, если это был возврат из longjmp, функция возвращает ненулевое значение.[1]

Стандарт запрещает сохранять результат выполнения функции setjmp, накладывая ограничения на место вызова.

Функция longjmp возвращает выполнение в точку вызова setjmp со значением val. Все объекты с неавтоматическим выделением памяти сохраняют своё значение. Также сохраняют свою значение автоматические объекты с квалификатором volatile.

Если функция была вызвана без соответствующего вызова setjmp, или функция, в которой восстанавливается выполнение уже завершилась, поведение не определено.

Использование setjmp/longjmp может привести к утечкам памяти, если выделение происходит между вызовами этих функций.[1]

Примечания



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "setjmp.h" в других словарях:

  • Setjmp.h — is a header defined in the C standard library to provide non local jumps (control flow) outside of the normal function call and return sequence. The paired functions setjmp and longjmp provide this functionality through first saving the… …   Wikipedia

  • Setjmp — Связать? setjmp  функция в языках программирования Си (язык программирования) и C++. Сохранаяет текущий контекст выполнения программы для обеспечения дальнейшего восстановления. Содержание …   Википедия

  • setjmp.h — C Standard Library Data types Character classification Strings Mathematics File input/output Date/time Localization …   Wikipedia

  • Setjmp.h — Este artículo o sección necesita ser wikificado con un formato acorde a las convenciones de estilo. Por favor, edítalo para que las cumpla. Mientras tanto, no elimines este aviso puesto el 8 de junio de 2011. También puedes ayudar wikificando… …   Wikipedia Español

  • Setjmp (функция) — setjmp сохранаяет текущий контекст выполнения программы для обеспечения дальнейшего восстановления Содержание 1 Синтаксис 2 Описание 3 Возвращаемое значение 4 См. также …   Википедия

  • Longjmp — Эту страницу предлагается объединить с setjmp.h. Пояснение причин и обсуждение на странице Википедия:К объединению/10 октября 2011. Обсуждение длится одну неделю (или дольше, если оно идёт медленно). Дата начала …   Википедия

  • Coroutine — Coroutines are computer program components that generalize subroutines to allow multiple entry points for suspending and resuming execution at certain locations. Coroutines are well suited for implementing more familiar program components such as …   Wikipedia

  • C standard library — The C Standard Library consists of a set of sections of the ANSI C standard in the programming language C. They describe a collection of headers and library routines used to implement common operations such as input/output[1] and string handling …   Wikipedia

  • Funciones de la biblioteca estándar de C — Anexo:Funciones de la biblioteca estándar de C Saltar a navegación, búsqueda El propósito de este artículo es proporcionar un listado alfabético de todas las funciones de la biblioteca estándar de C, y unas pocas funciones no estándar. Contenido… …   Wikipedia Español

  • Стандартная библиотека языка Си — Стандартная библиотека языка программирования С assert.h complex.h ctype.h errno.h fenv.h float.h inttypes.h iso646.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stdbool.h stddef.h …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»