位置:首页 > 高级语言 > 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