1 typedef char padding[16]; 2 3 struct { 4 padding p1; 5 char v; 6 padding p2; 7 } padding_char; 8 9 struct { 10 padding p1; 11 short v; 12 padding p2; 13 } padding_short; 14 15 struct { 16 padding p1; 17 int v; 18 padding p2; 19 } padding_int; 20 21 struct { 22 padding p1; 23 long v; 24 padding p2; 25 } padding_long; 26 27 struct { 28 padding p1; 29 long long v; 30 padding p2; 31 } padding_long_long; 32 33 struct { 34 padding p1; 35 float v; 36 padding p2; 37 } padding_float; 38 39 struct { 40 padding p1; 41 double v; 42 padding p2; 43 } padding_double; 44 45 struct { 46 padding p1; 47 long double v; 48 padding p2; 49 } padding_long_double; 50 51 static void 52 fill (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 60 void 61 fill_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 96 int 97 main () 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