7
|
1 /*
|
|
2 #include<stdio.h>
|
|
3 #include<setjmp.h>
|
|
4
|
|
5 void jmpfunc(jmp_buf env);
|
|
6 int setfunc();
|
|
7 int flag=0;
|
|
8
|
|
9 int
|
|
10 main(int argc, char **argv)
|
|
11 {
|
|
12 int rtn;
|
|
13 flag=1;
|
|
14 rtn = setfunc();
|
|
15 printf("rtn = %d\n", rtn);
|
|
16 return 0;
|
|
17 }
|
|
18
|
|
19 */
|
|
20 int
|
|
21 setfunc()
|
|
22 {
|
|
23 int a;
|
|
24 jmp_buf env;
|
|
25
|
|
26 if (a=setjmp(env)) {
|
|
27 printf("it's continued! with value %d", a);
|
|
28 return a;
|
|
29 }
|
|
30
|
|
31 jmpfunc(env);
|
|
32 return 0;
|
|
33 }
|
|
34
|
|
35 void
|
|
36 jmpfunc(jmp_buf env)
|
|
37 {
|
|
38 if (flag) {
|
|
39 longjmp(env, 2);
|
|
40 }
|
|
41 return;
|
|
42 }
|