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


C语言 longjmp用法及代码示例


C语言setjmp头文件(setjmp.h)中longjmp函数的用法及代码示例。

用法:

void longjmp (jmp_buf env, int val);
跳远
将环境还原到指示的状态env,评估setjmp充满表情envval

该函数永远不会返回到已被调用的位置。相反,该函数将控件转移到setjmp最后用于填充env,并将整个表达式计算为val(除非它为零,在这种情况下,它的评估值为1)。

如果env之前的调用未填充setjmp或如果具有此类调用的函数已终止执行,则会导致未定义的行为

在C++中,实现可以执行堆栈展开会自动破坏对象。如果这调用任何非平凡的破坏者,它导致未定义的行为

参数

env
类型的对象jmp_buf由之前的调用填充setjmp其中包含将环境还原到该点的信息。
val
的价值setjmp表达式求值。
如果为零,则表达式的计算结果为1

返回值

无(该函数永不返回)。

示例

/* longjmp example */
#include <stdio.h>      /* printf */
#include <setjmp.h>     /* jmp_buf, setjmp, longjmp */

main()
{
  jmp_buf env;
  int val;

  val=setjmp(env);

  printf ("val is %d\n",val);

  if (!val) longjmp(env, 1);

  return 0;
}


输出:
val is 0
val is 1



相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C longjmp function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。