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