Mercurial > hg > CbC > CbC_gcc
comparison CbC-examples/test_nest.c @ 16:4c6926a2b9bc
examples.
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 24 Sep 2009 12:51:25 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:11a6cbe2d14c | 16:4c6926a2b9bc |
---|---|
1 | |
2 int printf(char *, ...); | |
3 typedef void (*RET_FUNC)(int, void *); | |
4 | |
5 void g(RET_FUNC func) | |
6 { | |
7 func(33, 0); | |
8 } | |
9 | |
10 int f() | |
11 { | |
12 void *ret; | |
13 ret = ({ | |
14 __label__ exit0; | |
15 int retval; | |
16 void __return_func(int retval_, void *fp){ | |
17 retval = retval_; | |
18 goto exit0; | |
19 } | |
20 if (0) { | |
21 exit0: | |
22 printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); | |
23 return retval; | |
24 } | |
25 __return_func; | |
26 }); | |
27 | |
28 //g(__return_func, __builtin_frame_address(0)); | |
29 printf("f0: fp = 0x%x\n", __builtin_frame_address(0)); | |
30 printf("__return_func = %x\n", ret); | |
31 g(ret); | |
32 | |
33 printf("not good\n"); | |
34 return 0; | |
35 | |
36 //exit0: | |
37 //printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); | |
38 //return retval; | |
39 } | |
40 | |
41 int main(int argc, char **argv) | |
42 { | |
43 int t; | |
44 printf("main before: fp = 0x%x\n", __builtin_frame_address(0)); | |
45 t = f(); | |
46 printf("f = %d\n", t); | |
47 printf("main after: fp = 0x%x\n", __builtin_frame_address(0)); | |
48 } | |
49 | |
50 |