]> git.sur5r.net Git - cc65/blob - test/ref/init.c
Merge pull request #249 from polluks/master
[cc65] / test / ref / init.c
1 /*\r
2   !!DESCRIPTION!! variable initialization\r
3   !!ORIGIN!!      LCC 4.1 Testsuite\r
4   !!LICENCE!!     own, freely distributeable for non-profit. read CPYRIGHT.LCC\r
5 */\r
6 \r
7 #include "common.h"\r
8 /* todo: add back conditional stuff here ! */\r
9 \r
10 typedef struct { int codes[3]; char name[6]; } Word;\r
11 \r
12 #ifdef NO_IMPLICIT_FUNC_PROTOTYPES\r
13 \r
14 #ifdef NO_OLD_FUNC_DECL\r
15 f();\r
16 void g(Word *p);\r
17 h();\r
18 #else\r
19 f();\r
20 g();\r
21 h();\r
22 #endif\r
23 \r
24 #endif\r
25 \r
26 /*\r
27 Word words[] = {\r
28         1, 2, 3,"if",\r
29         { { 4, 5 }, { 'f', 'o', 'r' } },\r
30         6, 7, 8, {"else"},\r
31         { { 9, 10, 11,}, 'w', 'h', 'i', 'l', 'e', },\r
32         { 0 },\r
33 }, *wordlist = words;\r
34 */\r
35 \r
36 Word words[] = {\r
37         {{1, 2, 3},"if"},\r
38         { { 4, 5 }, { 'f', 'o', 'r' } },\r
39         {{6, 7, 8}, "else"},\r
40         { { 9, 10, 11}, {'w', 'h', 'i', 'l', 'e', }},\r
41         {{ 0 }},\r
42 }, *wordlist = words;\r
43 \r
44 /*int x[][5] = { 1, 2, 3, 4, 0, { 5, 6 }, { 7 } };*/\r
45 int x[][5] = { {1, 2, 3, 4, 0 }, { 5, 6 }, { 7 } };\r
46 int *y[] = { x[0], x[1], x[2], 0 };\r
47 \r
48 main()\r
49 {\r
50         int i, j;\r
51 \r
52         for (i = 0; y[i]; i++) {\r
53                 for (j = 0; y[i][j]; j++)\r
54                         printf(" %d", y[i][j]);\r
55                 printf("\n");\r
56         }\r
57         f();\r
58         g(wordlist);\r
59         return 0;\r
60 }\r
61 \r
62 f() {\r
63         static char *keywords[] = {"if", "for", "else", "while", 0, };\r
64         char **p;\r
65 \r
66         for (p = keywords; *p; p++)\r
67                 printf("%s\n", *p);\r
68 }\r
69 \r
70 #ifdef NO_OLD_FUNC_DECL\r
71 void g(Word *p)\r
72 #else\r
73 g(p)\r
74 Word *p;\r
75 #endif\r
76 {\r
77         int i;\r
78 \r
79         for ( ; p->codes[0]; p++) {\r
80                 for (i = 0; i < sizeof p->codes/sizeof(p->codes[0]); i++)\r
81                         printf("%d ", p->codes[i]);\r
82                 printf("%s\n", p->name);\r
83         }\r
84         h();\r
85 }\r
86 \r
87 h()\r
88 {\r
89         int i;\r
90 \r
91         for (i = 0; i < sizeof(words)/sizeof(Word); i++)\r
92                 printf("%d %d %d %s\n", words[i].codes[0],\r
93                         words[i].codes[1], words[i].codes[2],\r
94                         &words[i].name[0]);\r
95 }\r