当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 宏 setjmp()用法及代码示例



描述

C 库宏int setjmp(jmp_buf environment), 保存当前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\n", val);
      exit(0);
   }
   
   printf("Jump function call\n");
   jmpfunction( env_buffer );
   
   return(0);
}

void jmpfunction(jmp_buf env_buf) {
   longjmp(env_buf, "tutorialspoint.com");
}

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

Jump function call
Returned from a longjmp() with value = tutorialspoint.com

相关用法


注:本文由纯净天空筛选整理自 C library macro - setjmp()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。