#inlcude <setjmp.h> #include <stdio.h> jmp_buf buf; void b() { printff("a\n"); longjmp(buf,1); // longjmp(buf,i) 返回值爲i printff("b\n"); } int main() { int ga; ga = setjmp(buf); //設置成功會初始值爲0,跳到這的時候返回值爲 longjmp設置的i if(ga) { printf("1\n"); } else { b(); } return 0; }
須要注意的是:保證局部變量在longjmp過程當中一直保持它的值惟一可靠的方法是把他聲明爲:volatile。-適用於那些值在setjmp和longjmp之間會改變的變量。code
setjmp/longjmp 最大的用途是錯誤恢復。一旦發現一個不可恢復的錯誤,能夠把控制轉移到主輸入循環。io