int setjmp(jmp_buf state);
void longjmp(jmp_buf state, int value);
这两个函数提供了另一种goto语句的机制,但是不局限于函数的作用域之内。
直接上例子:
#include<stdio.h> #include<setjmp.h> jmp_buf my_jmp_buf; void jmp_to_main(int condition) { if (condition < 6) longjmp(my_jmp_buf, condition); } int main() { int condition = 0; condition = setjmp(my_jmp_buf); printf("condition:%d\n",condition); condition++; jmp_to_main(condition); printf("exit...\n"); return 0; }
Output:
condition:0
condition:1
condition:2
condition:3
condition:4
condition:5
exit...