本人首次發帖 ,謝謝大家!
首先該頭文件有三個:
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
謝謝!