Latest web development tutorials

C biblioteca de macros - setjmp ()

C biblioteca estándar - <setjmp.h> C biblioteca estándar - <setjmp.h>

descripción

C biblioteca Macroint setjmp (jmp_buf medio ambiente) se almacena en la variable de entorno actual entorno con el fin de funcionar longjmp ()para su uso posterior. Si esta macro devuelve directamente de la llamada a la macro, devuelve cero, pero si se vuelve de llamada a la funciónlongjmp (), que devuelve un longjmp pasada como segundo argumento de un valor distinto de cero.

declaración

Aquí está el setjmp () instrucción de macro.

int setjmp(jmp_buf environment)

parámetros

  • medio ambiente - este es el objeto que se utiliza para almacenar información sobre el entorno de un jmp_buf tipo.

Valor de retorno

Esta macro puede devolver más de una vez. La primera vez, de una forma directa lo llaman, siempre devuelve cero. Con la información ambiental proporcionó cuando se llama a longjmp, esta macro volverá de nuevo, momento en el que devuelve el valor se pasa como segundo argumento para longjmp.

Ejemplos

El siguiente ejemplo demuestra el setjmp () Uso de macros.

#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>

int main()
{
   int val;
   jmp_buf env_buffer;

   /* 保存 longjmp 的调用环境 */
   val = setjmp( env_buffer );
   if( val != 0 ) 
   {
      printf("从 longjmp() 返回值 = %s\n", val);
      exit(0);
   }
   printf("跳转函数调用\n");
   jmpfunction( env_buffer );
   
   return(0);
}

void jmpfunction(jmp_buf env_buf)
{
   longjmp(env_buf, "w3cschool.cc");
}

Vamos a compilar y ejecutar el programa anterior, lo que resultará en lo siguiente:

跳转函数调用
从 longjmp() 返回值 = w3cschool.cc

C biblioteca estándar - <setjmp.h> C biblioteca estándar - <setjmp.h>