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