1 #include <stdio.h>
2 
3 int
main()4 main() {
5 	/* Check with more than one storage unit, and whether
6 	 * mixing with ordinary char at end works and still
7 	 * aligns properly
8 	 */
9 	struct foo {
10 		char		x; /* align me */
11 		unsigned	a:3;
12 		unsigned	b:4;
13 		unsigned	c:3;
14 		char		gnu;
15 		unsigned	d:17;
16 		unsigned	e:2;
17 		unsigned	f:31;
18 		int		absurd;
19 		unsigned	g:1;
20 	} fa[] = {
21 		{ 0 },
22 		{ 1 },
23 		{ 1, 2 },
24 		{ 1, 2, 3 },
25 		{ 1, 2, 3, 4 },
26 		{ 1, 2, 3, 4, 5 },
27 		{ 1, 2, 3, 4, 5, 6 },
28 		{ 1, 2, 3, 4, 5, 6, 3 },
29 		{ 1, 2, 3, 4, 5, 6, 3, 8 },
30 		{ 1, 2, 3, 4, 5, 6, 3, 8, 9 },
31 		{ 1, 2, 3, 4, 5, 6, 3, 8, 9, 1 },
32 	};
33 	int	i;
34 
35 
36 	printf("%d\n", (int)sizeof(struct foo));
37 
38 	for (i = 0; i < 11; ++i) {
39 		printf("%u, %u, %u, %u, %u, %u, %u, %u, %d, %u\n",
40 			fa[i].a, fa[i].b, fa[i].c, fa[i].d, fa[i].gnu, fa[i].e, fa[i].f, fa[i].g, fa[i].absurd, fa[i].x);
41 	}
42 	return 0;
43 }
44 
45