Пространства имён
Варианты
Действия

setjmp

Материал из cppreference.com
< cpp‎ | utility‎ | program

 
 
 
Коммунальные услуги Программа поддержки
Программа прекращения
Оригинал:
Program termination
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
abort
exit
quick_exit(C++11)
_Exit(C++11)
Взаимодействие с окружающей средой
Оригинал:
Communicating with the environment
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Сигналы
Оригинал:
Signals
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Сигнал типа
Оригинал:
Signal types
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
SIGABRT
SIGFPE
SIGILL
SIGINT
SIGSEGV
SIGTERM
Нелокальные переходы
Оригинал:
Non-local jumps
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
setjmp
longjmp
Типы
Оригинал:
Types
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
jmp_buf
 
Определено в заголовочном файле <csetjmp>
#define setjmp(env) /* implementation-defined */
Сохраняет текущий контекст выполнения в переменную env типа std::jmp_buf. Эта переменная впоследствии могут быть использованы для восстановления текущего контекста исполнения std::longjmp функции. То есть, при вызове функции std::longjmp сделано, выполнение продолжается в частности сайте вызов, который построили std::jmp_buf переменная передается std::longjmp. В этом случае setjmp возвращается Тхо значение, переданное std::longjmp.
Оригинал:
Saves the current execution context into a variable env of type std::jmp_buf. This variable can later be used to restore the current execution context by std::longjmp function. That is, when a call to std::longjmp function is made, the execution continues at the particular call site that constructed the std::jmp_buf variable passed to std::longjmp. In that case setjmp returns tho value passed to std::longjmp.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Параметры

env -
переменную, чтобы сохранить состояние выполнения программы .
Оригинал:
variable to save the execution state of the program to.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращаемое значение

0 если макрос был вызван исходный код и контекст выполнения был сохранен в env.
Оригинал:
0 if the macro was called by the original code and the execution context was saved to env.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Non-нулевое значение, если нелокальных прыжок был просто выполняется. Возвращается значение в такой же, как передается std::longjmp.
Оригинал:
Non-zero value if a non-local jump was just performed. The return value in the same as passed to std::longjmp.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

#include <iostream>
#include <csetjmp>
 
std::jmp_buf jump_buffer;
 
[[noreturn]] void a(int count)
{
    std::cout << "a(" << count << ") called\n";
    std::longjmp(jump_buffer, count+1);  // setjump() will return count+1
}
 
int main()
{
    int count = setjmp(jump_buffer);
    if (count != 9) {
        a(count);  // This will cause setjmp() to exit
    }
}

Вывод:

a(0) called
a(1) called
a(2) called
a(3) called
a(4) called
a(5) called
a(6) called
a(7) called
a(8) called

[править] См. также

переход на указанное место
Оригинал:
jumps to specified location
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
C documentation for setjmp