C语言setjmp头文件(setjmp.h)中setjmp宏的用法及代码示例。
用法:
int setjmp (jmp_buf env);
节省调用环境以实现跳远
呼唤longjmp信息存储在env恢复相同的状态,并将控件返回到同一点(对setjmp),该值被评估为特定的非零值。
调用环境的状态包括所有可访问对象的值,但函数本地自动持续时间的值除外,这些值没有
volatile
限定的类型,并且在调用之前会发生变化longjmp;这些具有不确定的值。的调用setjmp应该单独是一个表达式语句,或者在选择或迭代语句中作为(可能取反的)整个控制表达式进行评估,或者与整数常量表达式进行比较。否则,会导致未定义的行为。
参数
- env
- 类型的对象jmp_buf存储环境信息的位置。
返回值
该宏可能返回不止一次:第一次,直接调用它;在这种情况下,它始终返回零。什么时候longjmp调用时将信息设置为env,宏再次返回;这次它返回传递给的值longjmp如果它不为零,则作为第二个参数,或者
1
如果为零。示例
/* setjmp example: error handling */
#include <stdio.h> /* printf, scanf */
#include <stdlib.h> /* exit */
#include <setjmp.h> /* jmp_buf, setjmp, longjmp */
main()
{
jmp_buf env;
int val;
val = setjmp (env);
if (val) {
fprintf (stderr,"Error %d happened",val);
exit (val);
}
/* code here */
longjmp (env,101); /* signaling an error */
return 0;
}
函数用途setjmp设置一个catch-point,以后可以由它调用longjmp表示错误。
输出:
Error 101 happened |
相关用法
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C setjmp function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。