位置:首頁 > 高級語言 > C語言標準庫 > setjmp() - C函數

setjmp() - C函數

C庫宏int setjmp(jmp_buf environment) 環境保存當前的環境的函數longjmp().通過以後使用到環境變量。如果該宏直接從宏調用返回,返回零,但如果它返回 longjmp().函數調用,那麼返回的值傳遞給longjmp的第二個參數。 

聲明

以下是聲明的setjmp()宏。

int setjmp(jmp_buf environment)

參數

  • environment -- 這是jmp_buf類型的存儲環境的信息,其中的對象。

返回值

這個宏可以返回不止一次。第一次其直接調用,它總是返回為零。當調用longjmp的設置環境的信息,的宏再次返回;現在它返回的值傳遞給longjmp的第二個參數。

例子

下麵的例子顯示了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
", val);
      exit(0);
   }
   printf("Jump function call
");
   jmpfunction( env_buffer );
   
   return(0);
}

void jmpfunction(jmp_buf env_buf)
{
   longjmp(env_buf, "yiibaisgitbook.net");
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

Jump function call
Returned from a longjmp() with value = yiibaisgitbook.net