0008-longjmp.c - scc - simple c99 compiler
(HTM) git clone git://git.simple-cc.org/scc
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
0008-longjmp.c (471B)
---
1 #include <setjmp.h>
2 #include <stdio.h>
3
4 /*
5 output:
6 test 1
7 i = 1, v = 2
8 test 2
9 i = 2, v = 3
10 end:
11 */
12
13 jmp_buf recover;
14
15 void
16 test(char *s, int val)
17 {
18 puts(s);
19 longjmp(recover, val);
20 }
21
22 int
23 main()
24 {
25 static int i;
26 auto volatile int v;
27
28 i = 0;
29 v = 1;
30 if (!setjmp(recover)) {
31 i = 1;
32 v = 2;
33 test("test 1", 1);
34 }
35 printf("i = %d, v = %d\n", i, v);
36
37 if (!setjmp(recover)) {
38 i = 2;
39 v = 3;
40 test("test 2", 0);
41 }
42 printf("i = %d, v = %d\n", i, v);
43
44 return 0;
45 }