Latest web development tutorials

Cライブラリのマクロ - のsetjmp()

C標準ライブラリ -  <SETJMP.H> C標準ライブラリ- <SETJMP.H>

説明

(longjmpの機能するために、現在の環境変数の環境に保存されているCライブラリマクロint型のsetjmp(のjmp_buf環境))、その後の使用のために。 マクロ呼び出しから直接このマクロを返した場合は、0を返しますが、それはlongjmpを()関数呼び出しから返された場合、それはゼロ以外の値の2番目の引数として渡されたlongjmp関数を返します。

声明

ここでのsetjmp()マクロ文です。

int setjmp(jmp_buf environment)

パラメータ

  • 環境-これはjmp_buf型の環境情報を格納するために使用するオブジェクトです。

戻り値

このマクロは複数回返すことがあります。 初めて、それを呼び出す直接に、それは常にゼロを返します。 あなたはlongjmp関数を呼び出すときに環境情報を提供すると、このマクロは、それは価値がはlongjmpする2番目の引数として渡されます返す時点で、再び戻ります。

次の例は、setjmp関数()マクロ使用方法を示します。

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

それでは、以下になります上記のプログラムを、コンパイルして実行してみましょう:

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

C標準ライブラリ -  <SETJMP.H> C標準ライブラリ- <SETJMP.H>