annotate test/tmp7.c @ 45:b9266c88495c

*** empty log message ***
author kono
date Thu, 13 Feb 2003 22:14:21 +0900
parents c63c4fdeb9a7
children b1c8ac8c308d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
1
d35df41eac69 Initial revision
kono
parents:
diff changeset
2
13
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
3 int k=3;
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
4
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
5 struct aa { int a[100]; } aaa,bbb;
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
6
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
7 void tmp(void);
d35df41eac69 Initial revision
kono
parents:
diff changeset
8
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
9 struct aa
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
10 main0(int);
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
11
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
12 struct aa
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
13 main0(int k)
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
14 {
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
15 int i;
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
16 struct aa ccc;
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
17
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
18 for(i=0;i<100;i++) ccc.a[i]=i;
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
19 ccc.a[55]=k;
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
20 return ccc;
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
21 }
d35df41eac69 Initial revision
kono
parents:
diff changeset
22
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
23 struct aa
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
24 main3(struct aa arg)
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
25 {
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
26 int j=++arg.a[55];
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
27 return main0(j);
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
28 }
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
29
8
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
30 void
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
31 main2(struct aa a1)
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
32 {
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
33 /* main2 a1.a[99] 0 */
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
34 /* main2 a1.a[55] 0 */
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
35 /* main2 a1.a[99] 55 */
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
36 /* main2 a1.a[55] 44 */
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
37 printf("main2 a1.a[99] %d\n",a1.a[99]);
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
38 printf("main2 a1.a[55] %d\n",a1.a[55]);
8
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
39 }
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
40
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
41 void
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
42 main1(struct aa a1)
d35df41eac69 Initial revision
kono
parents:
diff changeset
43 {
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
44 /* main1 a1.a[0] 0 */
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
45 /* main1 a1.a[0] 44 */
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
46 printf("main1 a1.a[0] %d\n",a1.a[0]);
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
47 a1.a[55]=44;
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
48 if (a1.a[0])
8
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
49 main2(a1);
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
50 else
8
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
51 main2(aaa);
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
52 }
d35df41eac69 Initial revision
kono
parents:
diff changeset
53
13
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
54
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
55 main(ac,av)
d35df41eac69 Initial revision
kono
parents:
diff changeset
56 int ac;
d35df41eac69 Initial revision
kono
parents:
diff changeset
57 char *av[];
d35df41eac69 Initial revision
kono
parents:
diff changeset
58 {
d35df41eac69 Initial revision
kono
parents:
diff changeset
59 register int i;
d35df41eac69 Initial revision
kono
parents:
diff changeset
60 register char *p;
d35df41eac69 Initial revision
kono
parents:
diff changeset
61 int j = 3;
16
ca0bce3b4810 struct copy
kono
parents: 15
diff changeset
62 struct { int b; void (*c)(struct aa); } q = {3,main1},r;
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
63 struct aa *aap[3];
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
64
d35df41eac69 Initial revision
kono
parents:
diff changeset
65 j = 3;
d35df41eac69 Initial revision
kono
parents:
diff changeset
66
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
67 bbb = main0(123);
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
68 printf("copied main0 ccc.a[55] %d==123\n",bbb.a[55]);
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
69 aap[2] = &bbb;
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
70 *aap[2] = main0(123);
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
71 printf("complex copied main0 ccc.a[55] %d==123\n",bbb.a[55]);
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
72 bbb.a[55]=0;
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
73 j = main0(123).a[55];
39
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
74 printf("new main0 ccc.a[55] in temporal copy %d==123\n",j);
c63c4fdeb9a7 struct done.
kono
parents: 37
diff changeset
75
45
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
76 j = 552;
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
77 bbb = main3(bbb);
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
78 printf("main3 bbb.a[55] in temporal copy %d==552 %d==1\n",j,bbb.a[55]);
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
79 j = main3(bbb).a[55];
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
80 printf("main3 bbb.a[55] in temporal copy %d==2 %d\n",j,bbb.a[53]);
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
81 j = main3(bbb).a[53];
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
82 printf("main3 bbb.a[55] in temporal copy %d==2 %d\n",j,bbb.a[53]);
b9266c88495c *** empty log message ***
kono
parents: 39
diff changeset
83
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
84 printf("%d==3\n",q.b);
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
85 /* 3==3 */
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
86 r = q;
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
87 printf("%d==3\n",r.b);
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
88 /* 3==3 */
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
89 (*r.c)(aaa);
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
90 printf("main aaa.a[55] %d\n",aaa.a[55]);
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
91 /* main aaa.a[55] 123 */
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
92 bbb.a[0]=44;
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
93 aaa = bbb;
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
94 aaa.a[99]=55; /* core dump? */
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
95 (*r.c)(aaa);
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
96 /* main aaa.a[55] 0 */
15
6667dbd4f718 eax before function call
kono
parents: 13
diff changeset
97 printf("main aaa.a[55] %d\n",aaa.a[55]);
8
e714bcee688b *** empty log message ***
kono
parents: 0
diff changeset
98 p = av[0];
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
99 if (!p) return;
d35df41eac69 Initial revision
kono
parents:
diff changeset
100 i = p[1];
d35df41eac69 Initial revision
kono
parents:
diff changeset
101 p = p+i;
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
102 /* 47 ./a.out */
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
103 printf("%d %s\n",i,p-i);
d35df41eac69 Initial revision
kono
parents:
diff changeset
104 }
d35df41eac69 Initial revision
kono
parents:
diff changeset
105
13
a8a812dace23 struct local initialization
kono
parents: 8
diff changeset
106 void
0
d35df41eac69 Initial revision
kono
parents:
diff changeset
107 tmp()
d35df41eac69 Initial revision
kono
parents:
diff changeset
108 {
d35df41eac69 Initial revision
kono
parents:
diff changeset
109 }
37
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
110
412ad2e6c2a2 struct copy
kono
parents: 16
diff changeset
111