1typedef char padding[16];
2
3struct {
4  padding p1;
5  char v;
6  padding p2;
7} padding_char;
8
9struct {
10  padding p1;
11  short v;
12  padding p2;
13} padding_short;
14
15struct {
16  padding p1;
17  int v;
18  padding p2;
19} padding_int;
20
21struct {
22  padding p1;
23  long v;
24  padding p2;
25} padding_long;
26
27struct {
28  padding p1;
29  long long v;
30  padding p2;
31} padding_long_long;
32
33struct {
34  padding p1;
35  float v;
36  padding p2;
37} padding_float;
38
39struct {
40  padding p1;
41  double v;
42  padding p2;
43} padding_double;
44
45struct {
46  padding p1;
47  long double v;
48  padding p2;
49} padding_long_double;
50
51static void
52fill (void *buf, long sizeof_buf)
53{
54  char *p = buf;
55  int i;
56  for (i = 0; i < sizeof_buf; i++)
57    p[i] = "The quick brown dingo jumped over the layzy dog."[i];
58}
59
60void
61fill_structs (void)
62{
63  fill (&padding_char.p1, sizeof (padding));
64  fill (&padding_char.v, sizeof (padding_char.v));
65  fill (&padding_char.p2, sizeof (padding));
66
67  fill (&padding_short.p1, sizeof (padding));
68  fill (&padding_short.v, sizeof (padding_short.v));
69  fill (&padding_short.p2, sizeof (padding));
70
71  fill (&padding_int.p1, sizeof (padding));
72  fill (&padding_int.v, sizeof (padding_int.v));
73  fill (&padding_int.p2, sizeof (padding));
74
75  fill (&padding_long.p1, sizeof (padding));
76  fill (&padding_long.v, sizeof (padding_long.v));
77  fill (&padding_long.p2, sizeof (padding));
78
79  fill (&padding_long_long.p1, sizeof (padding));
80  fill (&padding_long_long.v, sizeof (padding_long_long.v));
81  fill (&padding_long_long.p2, sizeof (padding));
82
83  fill (&padding_float.p1, sizeof (padding));
84  fill (&padding_float.v, sizeof (padding_float.v));
85  fill (&padding_float.p2, sizeof (padding));
86
87  fill (&padding_double.p1, sizeof (padding));
88  fill (&padding_double.v, sizeof (padding_double.v));
89  fill (&padding_double.p2, sizeof (padding));
90
91  fill (&padding_long_double.p1, sizeof (padding));
92  fill (&padding_long_double.v, sizeof (padding_long_double.v));
93  fill (&padding_long_double.p2, sizeof (padding));
94}
95
96int
97main ()
98{
99  int size, value;
100
101  fill_structs ();
102
103  size = (int) sizeof (char);
104  size = (int) sizeof (short);
105  size = (int) sizeof (int);
106  size = (int) sizeof (long);
107  size = (int) sizeof (long long);
108  size = (int) sizeof (void*);
109  size = (int) sizeof (void (*)(void));
110  size = (int) sizeof (float);
111  size = (int) sizeof (double);
112  size = (int) sizeof (long double);
113
114  /* Signed char?  */
115  value = '\377';
116  value = (int) (char) -1;
117  value = (int) (signed char) -1;
118  value = (int) (unsigned char) -1;
119
120  return 0;
121}
122