Macro de bibliothèque C - setjmp ()

La description

La macro de la bibliothèque C int setjmp(jmp_buf environment), enregistre le courant environment dans l'environnement variable pour une utilisation ultérieure par la fonction longjmp(). Si cette macro retourne directement de l'appel de la macro, elle renvoie zéro mais si elle retourne d'unlongjmp() function call, puis il renvoie la valeur transmise à longjmp comme second argument.

Déclaration

Voici la déclaration de la macro setjmp ().

int setjmp(jmp_buf environment)

Paramètres

  • environment - C'est l'objet de type jmp_buf où sont stockées les informations d'environnement.

Valeur de retour

Cette macro peut renvoyer plusieurs fois. La première fois, lors de son appel direct, il renvoie toujours zéro. Lorsque longjmp est appelé avec les informations définies sur l'environnement, la macro revient à nouveau; maintenant, il renvoie la valeur transmise à longjmp comme deuxième argument.

Exemple

L'exemple suivant montre l'utilisation de la 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");
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

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