Latest web development tutorials

C libreria di macro - setjmp ()

C libreria standard - <setjmp.h> C libreria standard - <setjmp.h>

descrizione

C libreria di macroint setjmp (jmp_buf ambiente) memorizzato nella variabile d'ambiente contesto attuale, al fine di funzionare longjmp ()per un uso successivo. Se questa macro restituisce direttamente dalla chiamata di macro, esso restituisce zero, ma se si torna dalongjmp) chiamata di funzione (,restituisce un longjmp passato come secondo argomento di un valore diverso da zero.

dichiarazione

Ecco l'setjmp () dichiarazione macro.

int setjmp(jmp_buf environment)

parametri

  • ambiente - questo è l'oggetto utilizzato per memorizzare le informazioni ambiente di tipo jmp_buf.

Valore di ritorno

Questa macro può restituire più di una volta. La prima volta, in modo diretto lo chiamano, restituisce sempre zero. Con le informazioni ambientali fornite quando si chiama longjmp, questa macro tornerà di nuovo, a quel punto restituisce il valore verrà passato come secondo argomento a longjmp.

Esempi

L'esempio seguente mostra la setjmp () l'utilizzo di macro.

#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");
}

Facciamo compilare ed eseguire il programma di cui sopra, che si tradurrà in quanto segue:

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

C libreria standard - <setjmp.h> C libreria standard - <setjmp.h>