C语言setjmp头文件(setjmp.h)中longjmp函数的用法及代码示例。
用法:
void longjmp (jmp_buf env, int val);
跳远
该函数永远不会返回到已被调用的位置。相反,该函数将控件转移到setjmp最后用于填充env,并将整个表达式计算为val(除非它为零,在这种情况下,它的评估值为
1
)。如果env之前的调用未填充setjmp或如果具有此类调用的函数已终止执行,则会导致未定义的行为。
在C++中,实现可以执行堆栈展开会自动破坏对象。如果这调用任何非平凡的破坏者,它导致未定义的行为。
参数
返回值
无(该函数永不返回)。示例
/* 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。