目录

int setjmp(jmp_buf environment)

描述 (Description)

C库宏int setjmp(jmp_buf environment)将当前environment保存到变量环境中供以后使用函数longjmp() 。 如果此宏直接从宏调用返回,则返回零但如果从longjmp()函数调用返回,则返回传递给longjmp的值作为第二个参数。

声明 (Declaration)

以下是setjmp()宏的声明。

int setjmp(jmp_buf environment)

参数 (Parameters)

  • environment - 这是存储环境信息的jmp_buf类型的对象。

返回值 (Return Value)

此宏可能会返回多次。 第一次,在直接调用时,它总是返回零。 当使用设置到环境的信息调用longjmp时,宏再次返回; 现在它返回传递给longjmp的值作为第二个参数。

例子 (Example)

以下示例显示了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, "iowiki.com");
}

让我们编译并运行上面的程序,这将产生以下结果 -

Jump function call
Returned from a longjmp() with value = iowiki.com
↑回到顶部↑
WIKI教程 @2018