setjmp
De cppreference.com
<metanoindex/>
<tbody> </tbody>| Definido no cabeçalho <csetjmp>
|
||
#define setjmp(env) /* implementation-defined */ |
||
Salva o contexto de execução atual em um
env variável de std::jmp_buf tipo. Esta variável pode ser usado posteriormente para restaurar o contexto de execução atual por função std::longjmp. Isto é, quando uma chamada de função std::longjmp é feito, a execução continua com o local de chamada especial, que a variável construída std::jmp_buf passado para std::longjmp. Nesse caso, os retornos setjmp valor tho passado para std::longjmp.Original:
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.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Parâmetros
| env | - | variável para guardar o estado de execução do programa a .
Original: variable to save the execution state of the program to. The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Valor de retorno
0 se a macro foi chamado pelo código original e o contexto de execução foi salvo env.Original:
0 if the macro was called by the original code and the execution context was saved to env.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Valor diferente de zero se um salto não-local estava realizada. O valor de retorno no mesmo passado para std::longjmp.
Original:
Non-zero value if a non-local jump was just performed. The return value in the same as passed to std::longjmp.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Exemplo
#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
}
}
Saída:
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
