1
2
3
4
5
6
7
8
9enum e1 {
10 A = 0,
11 B = 1,
12};
13
14enum e2 {
15 C = 100,
16 D = 4294967295,
17 E = 0,
18};
19
20typedef enum e2 e2_t;
21
22typedef enum {
23 F = 0,
24 G = 1,
25 H = 2,
26} e3_t;
27
28typedef int int_t;
29
30typedef volatile const int * volatile const crazy_ptr_t;
31
32typedef int *****we_need_to_go_deeper_ptr_t;
33
34typedef volatile const we_need_to_go_deeper_ptr_t * restrict * volatile * const * restrict volatile * restrict const * volatile const * restrict volatile const how_about_this_ptr_t;
35
36typedef int *ptr_arr_t[10];
37
38typedef void (*fn_ptr1_t)(int);
39
40typedef void (*printf_fn_t)(const char *, ...);
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74typedef char * const * (*fn_ptr2_t)(struct {
75 int a;
76}, int (*)(int));
77
78typedef struct {
79 int a;
80 void (*b)(int, struct {
81 int c;
82 }, union {
83 char d;
84 int e[5];
85 });
86} (*fn_complex_t)(union {
87 void *f;
88 char g[16];
89}, struct {
90 int h;
91});
92
93typedef void (* (*signal_t)(int, void (*)(int)))(int);
94
95typedef char * (*fn_ptr_arr1_t[10])(int **);
96
97typedef char * (* const (* const fn_ptr_arr2_t[5])())(char * (*)(int));
98
99struct struct_w_typedefs {
100 int_t a;
101 crazy_ptr_t b;
102 we_need_to_go_deeper_ptr_t c;
103 how_about_this_ptr_t d;
104 ptr_arr_t e;
105 fn_ptr1_t f;
106 printf_fn_t g;
107 fn_ptr2_t h;
108 fn_complex_t i;
109 signal_t j;
110 fn_ptr_arr1_t k;
111 fn_ptr_arr2_t l;
112};
113
114typedef struct {
115 int x;
116 int y;
117 int z;
118} anon_struct_t;
119
120struct struct_fwd;
121
122typedef struct struct_fwd struct_fwd_t;
123
124typedef struct struct_fwd *struct_fwd_ptr_t;
125
126union union_fwd;
127
128typedef union union_fwd union_fwd_t;
129
130typedef union union_fwd *union_fwd_ptr_t;
131
132struct struct_empty {};
133
134struct struct_simple {
135 int a;
136 char b;
137 const int_t *p;
138 struct struct_empty s;
139 enum e2 e;
140 enum {
141 ANON_VAL1 = 1,
142 ANON_VAL2 = 2,
143 } f;
144 int arr1[13];
145 enum e2 arr2[5];
146};
147
148union union_empty {};
149
150union union_simple {
151 void *ptr;
152 int num;
153 int_t num2;
154 union union_empty u;
155};
156
157struct struct_in_struct {
158 struct struct_simple simple;
159 union union_simple also_simple;
160 struct {
161 int a;
162 } not_so_hard_as_well;
163 union {
164 int b;
165 int c;
166 } anon_union_is_good;
167 struct {
168 int d;
169 int e;
170 };
171 union {
172 int f;
173 int g;
174 };
175};
176
177struct struct_in_array {};
178
179struct struct_in_array_typed {};
180
181typedef struct struct_in_array_typed struct_in_array_t[2];
182
183struct struct_with_embedded_stuff {
184 int a;
185 struct {
186 int b;
187 struct {
188 struct struct_with_embedded_stuff *c;
189 const char *d;
190 } e;
191 union {
192 volatile long int f;
193 void * restrict g;
194 };
195 };
196 union {
197 const int_t *h;
198 void (*i)(char, int, void *);
199 } j;
200 enum {
201 K = 100,
202 L = 200,
203 } m;
204 char n[16];
205 struct {
206 char o;
207 int p;
208 void (*q)(int);
209 } r[5];
210 struct struct_in_struct s[10];
211 int t[11];
212 struct struct_in_array (*u)[2];
213 struct_in_array_t *v;
214};
215
216struct float_struct {
217 float f;
218 const double *d;
219 volatile long double *ld;
220};
221
222struct root_struct {
223 enum e1 _1;
224 enum e2 _2;
225 e2_t _2_1;
226 e3_t _2_2;
227 struct struct_w_typedefs _3;
228 anon_struct_t _7;
229 struct struct_fwd *_8;
230 struct_fwd_t *_9;
231 struct_fwd_ptr_t _10;
232 union union_fwd *_11;
233 union_fwd_t *_12;
234 union_fwd_ptr_t _13;
235 struct struct_with_embedded_stuff _14;
236 struct float_struct _15;
237};
238
239
240
241int f(struct root_struct *s)
242{
243 return 0;
244}
245