函数原型:
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);
jmp_buf是特殊的类型,某种形式的数组。
课本的说明太过于复杂,本人的理解是这样的:
这两个是非局部跳转语句;局部跳转语句就是c的goto,只能在函数内跳转。
setjmp设置的位置就是你要使用跳转之后的位置,返回值可以告诉你是从哪里返回的;
跳转的操作是通过longjmp函数实现的,在你需要跳转到setjmp的时候,调用longjmp函数;
跳转后返回到setjmp调用,其返回值就是你跳转时的val变量,所有你就可以知道此处跳转是从哪里产生的。
详细代码大家请参考书本,本人觉得这部书是很经典的。
以上是个人的理解,如有错误,请大家多多指教,万分感谢。