Espacios de nombres
Variantes
Acciones

setjmp

De cppreference.com
< cpp‎ | utility‎ | program
 
 
Biblioteca de servicios
 
 
Definido en el archivo de encabezado <csetjmp>
#define setjmp(env) /* implementation-defined */
Guarda el contexto de ejecución actual en una variable de envstd::jmp_buf tipo. Esta variable puede utilizarse posteriormente para restaurar el contexto de ejecución actual en función std::longjmp. Esto es, cuando una llamada a función std::longjmp está hecho, la ejecución continúa en el sitio de llamada particular, que construye la variable std::jmp_buf pasa a std::longjmp. En ese caso vuelve setjmp valor aunque pasó a 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.

Contenido

[editar]Parámetros

env -
variable para guardar el estado de ejecución del programa para .
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.

[editar]Valor de retorno

0 si la macro fue llamado por el código original y el contexto de ejecución se guardó en 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.
Valor distinto de cero si el salto no local se acaba de realizar. El valor de retorno de la misma pasa a 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.

[editar]Ejemplo

#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}}

Salida:

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

[editar]Ver también

Salta a la ubicación especificada.
(función)[editar]
close