本人首次发帖 ,谢谢大家!
首先该头文件有三个:
setjmp 宏函数、longjmp函数、jmp_buf类型
setjmp用来保存jmp_buf类型的变量:
表示当前运行点的环境状态, 然后longjmp函数来返回上次设置的运行环境变量
引用cplusplus例子:
/* 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;
}
在第一次调用longjmp返回0,以后调用返回 longjmp设置的值,
引用cprograme例子 :
#include <iostream> #include <csetjmp> std::jmp_buf jump_buffer;
void a(int count) { std::cout << "a(" << count << ") called\n"; std::longjmp(jump_buffer, count+1); // setjump() will return count+1 } int main() { int count = setjmp(jump_buffer); if (count != 9) { a(count); // This will cause setjmp() to exit } }
output:
a(0) called a(1) called a(2) called a(3) called a(4) called a(5) called a(6) called a(7) called a(8) called
谢谢!