Mercurial > hg > CbC > old > device
annotate test/scope.c @ 838:c7c19e5aefe7
CAST (left value) and BITFIELD
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 03 Dec 2010 22:06:34 +0900 |
parents | aad312f61654 |
children | 5313ed059cee |
rev | line source |
---|---|
363 | 1 /* |
2 | |
3 gcc -g -std=gnu99 test/scope.c | |
4 | |
5 */ | |
6 | |
7 #include <stdio.h> | |
550 | 8 // #define INLINE inline |
9 #ifdef INLINE | |
10 #else | |
11 #define INLINE | |
12 #endif | |
363 | 13 |
550 | 14 |
15 INLINE | |
363 | 16 void |
17 f(int *i,void *label) | |
18 { | |
19 static int k = 3; | |
20 { | |
21 static int k = 3; | |
22 *i = k++; | |
23 } | |
24 k--; | |
550 | 25 printf("#0024:f %d\n",k); |
363 | 26 } |
27 | |
550 | 28 INLINE |
553 | 29 int |
30 g(int m,int n) | |
31 { | |
32 int k=m,i=n-3; | |
33 if (m==2) return 0; | |
34 if (k==2||k==3||k==i) { | |
35 if (k==2||k==3||k==4) { | |
36 printf("#0035:k,i=%d,%d\n",k,i); | |
37 } | |
38 } | |
39 return m+n; | |
40 } | |
41 | |
42 INLINE | |
550 | 43 static int |
44 main0() | |
363 | 45 { |
46 int i,k; | |
47 void *exit = &&exit0; | |
48 i = 3;k=10; | |
544 | 49 |
553 | 50 printf("#0049:%s,%s,%d\n", |
544 | 51 __FILE__, |
52 __FUNCTION__, | |
53 __LINE__ | |
54 ); | |
55 | |
56 | |
363 | 57 for(int k=0;k<10;k++) { |
58 int i; | |
59 i = 4; | |
553 | 60 if (k==2||k==3||k==i) { |
61 if (k==2||k==3||k==4) { | |
62 const int m=g(k,i); | |
63 printf("#0062:m=%d\n",m); | |
64 } | |
65 } | |
363 | 66 if (({ |
67 __label__ exit0; | |
68 int i; | |
69 f(&i,&&exit0); | |
70 if (i==5) | |
71 goto exit0; | |
553 | 72 printf("#0071:2nd inner %d %d %0x\n",i,k,&&exit1==exit); |
363 | 73 exit0: |
74 i; | |
75 })!=7) { | |
76 goto exit1; | |
77 } else | |
78 goto *exit; | |
450
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
427
diff
changeset
|
79 /* not reached */ |
eaf9e2746c83
parallel assign for simple expr. (too complex solution)
kono
parents:
427
diff
changeset
|
80 i = ({ int k=3; k; }); |
363 | 81 exit1: |
553 | 82 printf("#0081:inner %d %d %0x\n",i,k,&&exit1==exit); |
363 | 83 } |
84 k++; | |
85 exit0: | |
553 | 86 printf("#0085:outer %d %d %0x\n",i,k,&&exit0==exit); |
363 | 87 return 0; |
88 } | |
550 | 89 |
90 int | |
91 main() | |
92 { | |
574 | 93 return main0(); |
550 | 94 } |