| #include <stdio.h> |
| |
| typedef char padding[16]; |
| |
| struct { |
| padding p1; |
| char v; |
| padding p2; |
| } padding_char; |
| |
| struct { |
| padding p1; |
| short v; |
| padding p2; |
| } padding_short; |
| |
| struct { |
| padding p1; |
| int v; |
| padding p2; |
| } padding_int; |
| |
| struct { |
| padding p1; |
| long v; |
| padding p2; |
| } padding_long; |
| |
| struct { |
| padding p1; |
| long long v; |
| padding p2; |
| } padding_long_long; |
| |
| struct { |
| padding p1; |
| float v; |
| padding p2; |
| } padding_float; |
| |
| struct { |
| padding p1; |
| double v; |
| padding p2; |
| } padding_double; |
| |
| struct { |
| padding p1; |
| long double v; |
| padding p2; |
| } padding_long_double; |
| |
| static void |
| fill (void *buf, long sizeof_buf) |
| { |
| char *p = buf; |
| int i; |
| for (i = 0; i < sizeof_buf; i++) |
| p[i] = "The quick brown dingo jumped over the layzy dog."[i]; |
| } |
| |
| void |
| fill_structs (void) |
| { |
| fill (&padding_char.p1, sizeof (padding)); |
| fill (&padding_char.v, sizeof (padding_char.v)); |
| fill (&padding_char.p2, sizeof (padding)); |
| |
| fill (&padding_short.p1, sizeof (padding)); |
| fill (&padding_short.v, sizeof (padding_short.v)); |
| fill (&padding_short.p2, sizeof (padding)); |
| |
| fill (&padding_int.p1, sizeof (padding)); |
| fill (&padding_int.v, sizeof (padding_int.v)); |
| fill (&padding_int.p2, sizeof (padding)); |
| |
| fill (&padding_long.p1, sizeof (padding)); |
| fill (&padding_long.v, sizeof (padding_long.v)); |
| fill (&padding_long.p2, sizeof (padding)); |
| |
| fill (&padding_long_long.p1, sizeof (padding)); |
| fill (&padding_long_long.v, sizeof (padding_long_long.v)); |
| fill (&padding_long_long.p2, sizeof (padding)); |
| |
| fill (&padding_float.p1, sizeof (padding)); |
| fill (&padding_float.v, sizeof (padding_float.v)); |
| fill (&padding_float.p2, sizeof (padding)); |
| |
| fill (&padding_double.p1, sizeof (padding)); |
| fill (&padding_double.v, sizeof (padding_double.v)); |
| fill (&padding_double.p2, sizeof (padding)); |
| |
| fill (&padding_long_double.p1, sizeof (padding)); |
| fill (&padding_long_double.v, sizeof (padding_long_double.v)); |
| fill (&padding_long_double.p2, sizeof (padding)); |
| } |
| |
| int |
| main () |
| { |
| fill_structs (); |
| |
| printf ("sizeof (char) == %d\n", (int) sizeof (char)); |
| printf ("sizeof (short) == %d\n", (int) sizeof (short)); |
| printf ("sizeof (int) == %d\n", (int) sizeof (int)); |
| printf ("sizeof (long) == %d\n", (int) sizeof (long)); |
| printf ("sizeof (long long) == %d\n", (int) sizeof (long long)); |
| |
| printf ("sizeof (void *) == %d\n", (int) sizeof (void*)); |
| printf ("sizeof (void (*)(void)) == %d\n", (int) sizeof (void (*)(void))); |
| |
| printf ("sizeof (float) == %d\n", (int) sizeof (float)); |
| printf ("sizeof (double) == %d\n", (int) sizeof (double)); |
| printf ("sizeof (long double) == %d\n", (int) sizeof (long double)); |
| |
| /* Signed char? */ |
| printf ("valueof ('\\377') == %d\n", '\377'); |
| printf ("valueof ((int) (char) -1) == %d\n", (int) (char) -1); |
| printf ("valueof ((int) (signed char) -1) == %d\n", (int) (signed char) -1); |
| printf ("valueof ((int) (unsigned char) -1) == %d\n", (int) (unsigned char) -1); |
| |
| return 0; |
| } |