Macro libreria C - setjmp ()

Descrizione

La macro della libreria C. int setjmp(jmp_buf environment), salva la corrente environment nell'ambiente variabile per un uso successivo da parte della funzione longjmp(). Se questa macro ritorna direttamente dal richiamo della macro, restituisce zero ma se ritorna da un filelongjmp() chiamata di funzione, quindi restituisce il valore passato a longjmp come secondo argomento.

Dichiarazione

Di seguito è riportata la dichiarazione per la macro setjmp ().

int setjmp(jmp_buf environment)

Parametri

  • environment - Questo è l'oggetto di tipo jmp_buf in cui sono archiviate le informazioni sull'ambiente.

Valore di ritorno

Questa macro può restituire più di una volta. La prima volta, alla sua chiamata diretta, restituisce sempre zero. Quando longjmp viene chiamato con le informazioni impostate per l'ambiente, la macro ritorna di nuovo; ora restituisce il valore passato a longjmp come secondo argomento.

Esempio

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

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

int main () {
   int val;
   jmp_buf env_buffer;

   /* save calling environment for longjmp */
   val = setjmp( env_buffer );
   
   if( val != 0 ) {
      printf("Returned from a longjmp() with value = %s\n", val);
      exit(0);
   }
   
   printf("Jump function call\n");
   jmpfunction( env_buffer );
   
   return(0);
}

void jmpfunction(jmp_buf env_buf) {
   longjmp(env_buf, "tutorialspoint.com");
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

Jump function call
Returned from a longjmp() with value = tutorialspoint.com