1 #include <stdio.h> 2 #include <stddef.h> 3 4 static struct {char m;} s0; 5 static struct {short m;} s1; 6 static struct {int m;} s2; 7 static struct {long m;} s3; 8 static struct {long long m;} s4; 9 static struct {char * m;} s5; 10 static struct {float m;} s6; 11 static struct {double m;} s7; 12 static struct {long double m;} s8; 13 static struct {ptrdiff_t m;} s9; 14 static struct {size_t m;} s10; 15 static struct {wchar_t m;} s11; 16 static struct {struct {char m;}m;} s12; 17 static struct {struct {short m;}m;} s13; 18 static struct {struct {int m;}m;} s14; 19 static struct {struct {long m;}m;} s15; 20 static struct {struct {long long m;}m;} s16; 21 static struct {struct {char * m;}m;} s17; 22 static struct {struct {float m;}m;} s18; 23 static struct {struct {double m;}m;} s19; 24 static struct {struct {long double m;}m;} s20; 25 static struct {struct {ptrdiff_t m;}m;} s21; 26 static struct {struct {size_t m;}m;} s22; 27 static struct {struct {wchar_t m;}m;} s23; 28 static struct {char m [10];} s24; 29 static struct {short m [10];} s25; 30 static struct {int m [10];} s26; 31 static struct {long m [10];} s27; 32 static struct {long long m [10];} s28; 33 static struct {char * m [10];} s29; 34 static struct {float m [10];} s30; 35 static struct {double m [10];} s31; 36 static struct {long double m [10];} s32; 37 static struct {ptrdiff_t m [10];} s33; 38 static struct {size_t m [10];} s34; 39 static struct {wchar_t m [10];} s35; 40 static struct {int :0; char m;} s36; 41 static struct {int :0; short m;} s37; 42 static struct {int :0; int m;} s38; 43 static struct {int :0; long m;} s39; 44 static struct {int :0; long long m;} s40; 45 static struct {int :0; char * m;} s41; 46 static struct {int :0; float m;} s42; 47 static struct {int :0; double m;} s43; 48 static struct {int :0; long double m;} s44; 49 static struct {int :0; ptrdiff_t m;} s45; 50 static struct {int :0; size_t m;} s46; 51 static struct {int :0; wchar_t m;} s47; main(void)52int main (void) { 53 int max_align = 0; 54 printf ("+++Biggest field alignment:\n"); 55 if (max_align < __alignof__ (s0.m)) 56 max_align = __alignof__ (s0.m); 57 if (max_align < __alignof__ (s1.m)) 58 max_align = __alignof__ (s1.m); 59 if (max_align < __alignof__ (s2.m)) 60 max_align = __alignof__ (s2.m); 61 if (max_align < __alignof__ (s3.m)) 62 max_align = __alignof__ (s3.m); 63 if (max_align < __alignof__ (s4.m)) 64 max_align = __alignof__ (s4.m); 65 if (max_align < __alignof__ (s5.m)) 66 max_align = __alignof__ (s5.m); 67 if (max_align < __alignof__ (s6.m)) 68 max_align = __alignof__ (s6.m); 69 if (max_align < __alignof__ (s7.m)) 70 max_align = __alignof__ (s7.m); 71 if (max_align < __alignof__ (s8.m)) 72 max_align = __alignof__ (s8.m); 73 if (max_align < __alignof__ (s9.m)) 74 max_align = __alignof__ (s9.m); 75 if (max_align < __alignof__ (s10.m)) 76 max_align = __alignof__ (s10.m); 77 if (max_align < __alignof__ (s11.m)) 78 max_align = __alignof__ (s11.m); 79 if (max_align < __alignof__ (s12.m)) 80 max_align = __alignof__ (s12.m); 81 if (max_align < __alignof__ (s13.m)) 82 max_align = __alignof__ (s13.m); 83 if (max_align < __alignof__ (s14.m)) 84 max_align = __alignof__ (s14.m); 85 if (max_align < __alignof__ (s15.m)) 86 max_align = __alignof__ (s15.m); 87 if (max_align < __alignof__ (s16.m)) 88 max_align = __alignof__ (s16.m); 89 if (max_align < __alignof__ (s17.m)) 90 max_align = __alignof__ (s17.m); 91 if (max_align < __alignof__ (s18.m)) 92 max_align = __alignof__ (s18.m); 93 if (max_align < __alignof__ (s19.m)) 94 max_align = __alignof__ (s19.m); 95 if (max_align < __alignof__ (s20.m)) 96 max_align = __alignof__ (s20.m); 97 if (max_align < __alignof__ (s21.m)) 98 max_align = __alignof__ (s21.m); 99 if (max_align < __alignof__ (s22.m)) 100 max_align = __alignof__ (s22.m); 101 if (max_align < __alignof__ (s23.m)) 102 max_align = __alignof__ (s23.m); 103 if (max_align < __alignof__ (s24.m)) 104 max_align = __alignof__ (s24.m); 105 if (max_align < __alignof__ (s25.m)) 106 max_align = __alignof__ (s25.m); 107 if (max_align < __alignof__ (s26.m)) 108 max_align = __alignof__ (s26.m); 109 if (max_align < __alignof__ (s27.m)) 110 max_align = __alignof__ (s27.m); 111 if (max_align < __alignof__ (s28.m)) 112 max_align = __alignof__ (s28.m); 113 if (max_align < __alignof__ (s29.m)) 114 max_align = __alignof__ (s29.m); 115 if (max_align < __alignof__ (s30.m)) 116 max_align = __alignof__ (s30.m); 117 if (max_align < __alignof__ (s31.m)) 118 max_align = __alignof__ (s31.m); 119 if (max_align < __alignof__ (s32.m)) 120 max_align = __alignof__ (s32.m); 121 if (max_align < __alignof__ (s33.m)) 122 max_align = __alignof__ (s33.m); 123 if (max_align < __alignof__ (s34.m)) 124 max_align = __alignof__ (s34.m); 125 if (max_align < __alignof__ (s35.m)) 126 max_align = __alignof__ (s35.m); 127 if (max_align < __alignof__ (s36.m)) 128 max_align = __alignof__ (s36.m); 129 if (max_align < __alignof__ (s37.m)) 130 max_align = __alignof__ (s37.m); 131 if (max_align < __alignof__ (s38.m)) 132 max_align = __alignof__ (s38.m); 133 if (max_align < __alignof__ (s39.m)) 134 max_align = __alignof__ (s39.m); 135 if (max_align < __alignof__ (s40.m)) 136 max_align = __alignof__ (s40.m); 137 if (max_align < __alignof__ (s41.m)) 138 max_align = __alignof__ (s41.m); 139 if (max_align < __alignof__ (s42.m)) 140 max_align = __alignof__ (s42.m); 141 if (max_align < __alignof__ (s43.m)) 142 max_align = __alignof__ (s43.m); 143 if (max_align < __alignof__ (s44.m)) 144 max_align = __alignof__ (s44.m); 145 if (max_align < __alignof__ (s45.m)) 146 max_align = __alignof__ (s45.m); 147 if (max_align < __alignof__ (s46.m)) 148 max_align = __alignof__ (s46.m); 149 if (max_align < __alignof__ (s47.m)) 150 max_align = __alignof__ (s47.m); 151 printf ("max field align=%d\n", max_align); 152 return 0; 153 } 154