Latest web development tutorials

C bibliothèque macro - setjmp ()

C bibliothèque standard - <setjmp.h> C bibliothèque standard - <setjmp.h>

description

C bibliothèque Macroint setjmp (jmp_buf environnement) stocké dans l'environnement actuel variable d'environnement afin de fonctionner longjmp ()pour une utilisation ultérieure. Si cette macro renvoie directement à partir de l'appel de macro, il retourne à zéro, mais si elle revient delongjmp () appel de fonction, il retourne un longjmp passé comme second argument d'une valeur non nulle.

déclaration

Voici le setjmp () déclaration macro.

int setjmp(jmp_buf environment)

Paramètres

  • environnement - ce qui est l'objet utilisé pour stocker des informations d'un environnement de type jmp_buf.

Valeur de retour

Cette macro peut revenir plus d'une fois. La première fois, dans un appel direct, il retourne toujours zéro. Avec l'information environnementale fournie lorsque vous appelez longjmp, cette macro retourne à nouveau, à quel point il renvoie la valeur sera passée comme second argument à longjmp.

Exemples

L'exemple suivant illustre le setjmp () macro utilisation.

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

Nous allons compiler et exécuter le programme ci-dessus, qui se traduira par ce qui suit:

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

C bibliothèque standard - <setjmp.h> C bibliothèque standard - <setjmp.h>