#include #include static struct {} s0; static union {} u0; static struct {int :0;} s1; static union {int :0;} u1; static struct {char m;} s2; static union {char m;} u2; static struct {short m;} s3; static union {short m;} u3; static struct {int m;} s4; static union {int m;} u4; static struct {long m;} s5; static union {long m;} u5; static struct {long long m;} s6; static union {long long m;} u6; static struct {char * m;} s7; static union {char * m;} u7; static struct {float m;} s8; static union {float m;} u8; static struct {double m;} s9; static union {double m;} u9; static struct {long double m;} s10; static union {long double m;} u10; static struct {ptrdiff_t m;} s11; static union {ptrdiff_t m;} u11; static struct {size_t m;} s12; static union {size_t m;} u12; static struct {wchar_t m;} s13; static union {wchar_t m;} u13; static struct {struct {char m;}m;} s14; static union {struct {char m;}m;} u14; static struct {union {char m;}m;} s15; static union {union {char m;}m;} u15; static struct {struct {short m;}m;} s16; static union {struct {short m;}m;} u16; static struct {union {short m;}m;} s17; static union {union {short m;}m;} u17; static struct {struct {int m;}m;} s18; static union {struct {int m;}m;} u18; static struct {union {int m;}m;} s19; static union {union {int m;}m;} u19; static struct {struct {long m;}m;} s20; static union {struct {long m;}m;} u20; static struct {union {long m;}m;} s21; static union {union {long m;}m;} u21; static struct {struct {long long m;}m;} s22; static union {struct {long long m;}m;} u22; static struct {union {long long m;}m;} s23; static union {union {long long m;}m;} u23; static struct {struct {char * m;}m;} s24; static union {struct {char * m;}m;} u24; static struct {union {char * m;}m;} s25; static union {union {char * m;}m;} u25; static struct {struct {float m;}m;} s26; static union {struct {float m;}m;} u26; static struct {union {float m;}m;} s27; static union {union {float m;}m;} u27; static struct {struct {double m;}m;} s28; static union {struct {double m;}m;} u28; static struct {union {double m;}m;} s29; static union {union {double m;}m;} u29; static struct {struct {long double m;}m;} s30; static union {struct {long double m;}m;} u30; static struct {union {long double m;}m;} s31; static union {union {long double m;}m;} u31; static struct {struct {ptrdiff_t m;}m;} s32; static union {struct {ptrdiff_t m;}m;} u32; static struct {union {ptrdiff_t m;}m;} s33; static union {union {ptrdiff_t m;}m;} u33; static struct {struct {size_t m;}m;} s34; static union {struct {size_t m;}m;} u34; static struct {union {size_t m;}m;} s35; static union {union {size_t m;}m;} u35; static struct {struct {wchar_t m;}m;} s36; static union {struct {wchar_t m;}m;} u36; static struct {union {wchar_t m;}m;} s37; static union {union {wchar_t m;}m;} u37; static struct {struct {}m;} s38; static union {struct {}m;} u38; static struct {union {}m;} s39; static union {union {}m;} u39; static struct {struct {int :0;}m;} s40; static union {struct {int :0;}m;} u40; static struct {union {int :0;}m;} s41; static union {union {int :0;}m;} u41; static struct {char m [0];} s42; static union {char m [0];} u42; static struct {short m [0];} s43; static union {short m [0];} u43; static struct {int m [0];} s44; static union {int m [0];} u44; static struct {long m [0];} s45; static union {long m [0];} u45; static struct {long long m [0];} s46; static union {long long m [0];} u46; static struct {char * m [0];} s47; static union {char * m [0];} u47; static struct {float m [0];} s48; static union {float m [0];} u48; static struct {double m [0];} s49; static union {double m [0];} u49; static struct {long double m [0];} s50; static union {long double m [0];} u50; static struct {ptrdiff_t m [0];} s51; static union {ptrdiff_t m [0];} u51; static struct {size_t m [0];} s52; static union {size_t m [0];} u52; static struct {wchar_t m [0];} s53; static union {wchar_t m [0];} u53; int main (void) { int min_size = 0; int min_align = 0; printf ("+++Minimal struct size/alignment:\n"); if (min_size > sizeof (s0)) min_size = sizeof (s0); if (min_align > __alignof__ (s0)) min_align = __alignof__ (s0); if (min_size > sizeof (u0)) min_size = sizeof (u0); if (min_align > __alignof__ (u0)) min_align = __alignof__ (u0); if (min_size > sizeof (s1)) min_size = sizeof (s1); if (min_align > __alignof__ (s1)) min_align = __alignof__ (s1); if (min_size > sizeof (u1)) min_size = sizeof (u1); if (min_align > __alignof__ (u1)) min_align = __alignof__ (u1); if (min_size > sizeof (s2)) min_size = sizeof (s2); if (min_align > __alignof__ (s2)) min_align = __alignof__ (s2); if (min_size > sizeof (u2)) min_size = sizeof (u2); if (min_align > __alignof__ (u2)) min_align = __alignof__ (u2); if (min_size > sizeof (s3)) min_size = sizeof (s3); if (min_align > __alignof__ (s3)) min_align = __alignof__ (s3); if (min_size > sizeof (u3)) min_size = sizeof (u3); if (min_align > __alignof__ (u3)) min_align = __alignof__ (u3); if (min_size > sizeof (s4)) min_size = sizeof (s4); if (min_align > __alignof__ (s4)) min_align = __alignof__ (s4); if (min_size > sizeof (u4)) min_size = sizeof (u4); if (min_align > __alignof__ (u4)) min_align = __alignof__ (u4); if (min_size > sizeof (s5)) min_size = sizeof (s5); if (min_align > __alignof__ (s5)) min_align = __alignof__ (s5); if (min_size > sizeof (u5)) min_size = sizeof (u5); if (min_align > __alignof__ (u5)) min_align = __alignof__ (u5); if (min_size > sizeof (s6)) min_size = sizeof (s6); if (min_align > __alignof__ (s6)) min_align = __alignof__ (s6); if (min_size > sizeof (u6)) min_size = sizeof (u6); if (min_align > __alignof__ (u6)) min_align = __alignof__ (u6); if (min_size > sizeof (s7)) min_size = sizeof (s7); if (min_align > __alignof__ (s7)) min_align = __alignof__ (s7); if (min_size > sizeof (u7)) min_size = sizeof (u7); if (min_align > __alignof__ (u7)) min_align = __alignof__ (u7); if (min_size > sizeof (s8)) min_size = sizeof (s8); if (min_align > __alignof__ (s8)) min_align = __alignof__ (s8); if (min_size > sizeof (u8)) min_size = sizeof (u8); if (min_align > __alignof__ (u8)) min_align = __alignof__ (u8); if (min_size > sizeof (s9)) min_size = sizeof (s9); if (min_align > __alignof__ (s9)) min_align = __alignof__ (s9); if (min_size > sizeof (u9)) min_size = sizeof (u9); if (min_align > __alignof__ (u9)) min_align = __alignof__ (u9); if (min_size > sizeof (s10)) min_size = sizeof (s10); if (min_align > __alignof__ (s10)) min_align = __alignof__ (s10); if (min_size > sizeof (u10)) min_size = sizeof (u10); if (min_align > __alignof__ (u10)) min_align = __alignof__ (u10); if (min_size > sizeof (s11)) min_size = sizeof (s11); if (min_align > __alignof__ (s11)) min_align = __alignof__ (s11); if (min_size > sizeof (u11)) min_size = sizeof (u11); if (min_align > __alignof__ (u11)) min_align = __alignof__ (u11); if (min_size > sizeof (s12)) min_size = sizeof (s12); if (min_align > __alignof__ (s12)) min_align = __alignof__ (s12); if (min_size > sizeof (u12)) min_size = sizeof (u12); if (min_align > __alignof__ (u12)) min_align = __alignof__ (u12); if (min_size > sizeof (s13)) min_size = sizeof (s13); if (min_align > __alignof__ (s13)) min_align = __alignof__ (s13); if (min_size > sizeof (u13)) min_size = sizeof (u13); if (min_align > __alignof__ (u13)) min_align = __alignof__ (u13); if (min_size > sizeof (s14)) min_size = sizeof (s14); if (min_align > __alignof__ (s14)) min_align = __alignof__ (s14); if (min_size > sizeof (u14)) min_size = sizeof (u14); if (min_align > __alignof__ (u14)) min_align = __alignof__ (u14); if (min_size > sizeof (s15)) min_size = sizeof (s15); if (min_align > __alignof__ (s15)) min_align = __alignof__ (s15); if (min_size > sizeof (u15)) min_size = sizeof (u15); if (min_align > __alignof__ (u15)) min_align = __alignof__ (u15); if (min_size > sizeof (s16)) min_size = sizeof (s16); if (min_align > __alignof__ (s16)) min_align = __alignof__ (s16); if (min_size > sizeof (u16)) min_size = sizeof (u16); if (min_align > __alignof__ (u16)) min_align = __alignof__ (u16); if (min_size > sizeof (s17)) min_size = sizeof (s17); if (min_align > __alignof__ (s17)) min_align = __alignof__ (s17); if (min_size > sizeof (u17)) min_size = sizeof (u17); if (min_align > __alignof__ (u17)) min_align = __alignof__ (u17); if (min_size > sizeof (s18)) min_size = sizeof (s18); if (min_align > __alignof__ (s18)) min_align = __alignof__ (s18); if (min_size > sizeof (u18)) min_size = sizeof (u18); if (min_align > __alignof__ (u18)) min_align = __alignof__ (u18); if (min_size > sizeof (s19)) min_size = sizeof (s19); if (min_align > __alignof__ (s19)) min_align = __alignof__ (s19); if (min_size > sizeof (u19)) min_size = sizeof (u19); if (min_align > __alignof__ (u19)) min_align = __alignof__ (u19); if (min_size > sizeof (s20)) min_size = sizeof (s20); if (min_align > __alignof__ (s20)) min_align = __alignof__ (s20); if (min_size > sizeof (u20)) min_size = sizeof (u20); if (min_align > __alignof__ (u20)) min_align = __alignof__ (u20); if (min_size > sizeof (s21)) min_size = sizeof (s21); if (min_align > __alignof__ (s21)) min_align = __alignof__ (s21); if (min_size > sizeof (u21)) min_size = sizeof (u21); if (min_align > __alignof__ (u21)) min_align = __alignof__ (u21); if (min_size > sizeof (s22)) min_size = sizeof (s22); if (min_align > __alignof__ (s22)) min_align = __alignof__ (s22); if (min_size > sizeof (u22)) min_size = sizeof (u22); if (min_align > __alignof__ (u22)) min_align = __alignof__ (u22); if (min_size > sizeof (s23)) min_size = sizeof (s23); if (min_align > __alignof__ (s23)) min_align = __alignof__ (s23); if (min_size > sizeof (u23)) min_size = sizeof (u23); if (min_align > __alignof__ (u23)) min_align = __alignof__ (u23); if (min_size > sizeof (s24)) min_size = sizeof (s24); if (min_align > __alignof__ (s24)) min_align = __alignof__ (s24); if (min_size > sizeof (u24)) min_size = sizeof (u24); if (min_align > __alignof__ (u24)) min_align = __alignof__ (u24); if (min_size > sizeof (s25)) min_size = sizeof (s25); if (min_align > __alignof__ (s25)) min_align = __alignof__ (s25); if (min_size > sizeof (u25)) min_size = sizeof (u25); if (min_align > __alignof__ (u25)) min_align = __alignof__ (u25); if (min_size > sizeof (s26)) min_size = sizeof (s26); if (min_align > __alignof__ (s26)) min_align = __alignof__ (s26); if (min_size > sizeof (u26)) min_size = sizeof (u26); if (min_align > __alignof__ (u26)) min_align = __alignof__ (u26); if (min_size > sizeof (s27)) min_size = sizeof (s27); if (min_align > __alignof__ (s27)) min_align = __alignof__ (s27); if (min_size > sizeof (u27)) min_size = sizeof (u27); if (min_align > __alignof__ (u27)) min_align = __alignof__ (u27); if (min_size > sizeof (s28)) min_size = sizeof (s28); if (min_align > __alignof__ (s28)) min_align = __alignof__ (s28); if (min_size > sizeof (u28)) min_size = sizeof (u28); if (min_align > __alignof__ (u28)) min_align = __alignof__ (u28); if (min_size > sizeof (s29)) min_size = sizeof (s29); if (min_align > __alignof__ (s29)) min_align = __alignof__ (s29); if (min_size > sizeof (u29)) min_size = sizeof (u29); if (min_align > __alignof__ (u29)) min_align = __alignof__ (u29); if (min_size > sizeof (s30)) min_size = sizeof (s30); if (min_align > __alignof__ (s30)) min_align = __alignof__ (s30); if (min_size > sizeof (u30)) min_size = sizeof (u30); if (min_align > __alignof__ (u30)) min_align = __alignof__ (u30); if (min_size > sizeof (s31)) min_size = sizeof (s31); if (min_align > __alignof__ (s31)) min_align = __alignof__ (s31); if (min_size > sizeof (u31)) min_size = sizeof (u31); if (min_align > __alignof__ (u31)) min_align = __alignof__ (u31); if (min_size > sizeof (s32)) min_size = sizeof (s32); if (min_align > __alignof__ (s32)) min_align = __alignof__ (s32); if (min_size > sizeof (u32)) min_size = sizeof (u32); if (min_align > __alignof__ (u32)) min_align = __alignof__ (u32); if (min_size > sizeof (s33)) min_size = sizeof (s33); if (min_align > __alignof__ (s33)) min_align = __alignof__ (s33); if (min_size > sizeof (u33)) min_size = sizeof (u33); if (min_align > __alignof__ (u33)) min_align = __alignof__ (u33); if (min_size > sizeof (s34)) min_size = sizeof (s34); if (min_align > __alignof__ (s34)) min_align = __alignof__ (s34); if (min_size > sizeof (u34)) min_size = sizeof (u34); if (min_align > __alignof__ (u34)) min_align = __alignof__ (u34); if (min_size > sizeof (s35)) min_size = sizeof (s35); if (min_align > __alignof__ (s35)) min_align = __alignof__ (s35); if (min_size > sizeof (u35)) min_size = sizeof (u35); if (min_align > __alignof__ (u35)) min_align = __alignof__ (u35); if (min_size > sizeof (s36)) min_size = sizeof (s36); if (min_align > __alignof__ (s36)) min_align = __alignof__ (s36); if (min_size > sizeof (u36)) min_size = sizeof (u36); if (min_align > __alignof__ (u36)) min_align = __alignof__ (u36); if (min_size > sizeof (s37)) min_size = sizeof (s37); if (min_align > __alignof__ (s37)) min_align = __alignof__ (s37); if (min_size > sizeof (u37)) min_size = sizeof (u37); if (min_align > __alignof__ (u37)) min_align = __alignof__ (u37); if (min_size > sizeof (s38)) min_size = sizeof (s38); if (min_align > __alignof__ (s38)) min_align = __alignof__ (s38); if (min_size > sizeof (u38)) min_size = sizeof (u38); if (min_align > __alignof__ (u38)) min_align = __alignof__ (u38); if (min_size > sizeof (s39)) min_size = sizeof (s39); if (min_align > __alignof__ (s39)) min_align = __alignof__ (s39); if (min_size > sizeof (u39)) min_size = sizeof (u39); if (min_align > __alignof__ (u39)) min_align = __alignof__ (u39); if (min_size > sizeof (s40)) min_size = sizeof (s40); if (min_align > __alignof__ (s40)) min_align = __alignof__ (s40); if (min_size > sizeof (u40)) min_size = sizeof (u40); if (min_align > __alignof__ (u40)) min_align = __alignof__ (u40); if (min_size > sizeof (s41)) min_size = sizeof (s41); if (min_align > __alignof__ (s41)) min_align = __alignof__ (s41); if (min_size > sizeof (u41)) min_size = sizeof (u41); if (min_align > __alignof__ (u41)) min_align = __alignof__ (u41); if (min_size > sizeof (s42)) min_size = sizeof (s42); if (min_align > __alignof__ (s42)) min_align = __alignof__ (s42); if (min_size > sizeof (u42)) min_size = sizeof (u42); if (min_align > __alignof__ (u42)) min_align = __alignof__ (u42); if (min_size > sizeof (s43)) min_size = sizeof (s43); if (min_align > __alignof__ (s43)) min_align = __alignof__ (s43); if (min_size > sizeof (u43)) min_size = sizeof (u43); if (min_align > __alignof__ (u43)) min_align = __alignof__ (u43); if (min_size > sizeof (s44)) min_size = sizeof (s44); if (min_align > __alignof__ (s44)) min_align = __alignof__ (s44); if (min_size > sizeof (u44)) min_size = sizeof (u44); if (min_align > __alignof__ (u44)) min_align = __alignof__ (u44); if (min_size > sizeof (s45)) min_size = sizeof (s45); if (min_align > __alignof__ (s45)) min_align = __alignof__ (s45); if (min_size > sizeof (u45)) min_size = sizeof (u45); if (min_align > __alignof__ (u45)) min_align = __alignof__ (u45); if (min_size > sizeof (s46)) min_size = sizeof (s46); if (min_align > __alignof__ (s46)) min_align = __alignof__ (s46); if (min_size > sizeof (u46)) min_size = sizeof (u46); if (min_align > __alignof__ (u46)) min_align = __alignof__ (u46); if (min_size > sizeof (s47)) min_size = sizeof (s47); if (min_align > __alignof__ (s47)) min_align = __alignof__ (s47); if (min_size > sizeof (u47)) min_size = sizeof (u47); if (min_align > __alignof__ (u47)) min_align = __alignof__ (u47); if (min_size > sizeof (s48)) min_size = sizeof (s48); if (min_align > __alignof__ (s48)) min_align = __alignof__ (s48); if (min_size > sizeof (u48)) min_size = sizeof (u48); if (min_align > __alignof__ (u48)) min_align = __alignof__ (u48); if (min_size > sizeof (s49)) min_size = sizeof (s49); if (min_align > __alignof__ (s49)) min_align = __alignof__ (s49); if (min_size > sizeof (u49)) min_size = sizeof (u49); if (min_align > __alignof__ (u49)) min_align = __alignof__ (u49); if (min_size > sizeof (s50)) min_size = sizeof (s50); if (min_align > __alignof__ (s50)) min_align = __alignof__ (s50); if (min_size > sizeof (u50)) min_size = sizeof (u50); if (min_align > __alignof__ (u50)) min_align = __alignof__ (u50); if (min_size > sizeof (s51)) min_size = sizeof (s51); if (min_align > __alignof__ (s51)) min_align = __alignof__ (s51); if (min_size > sizeof (u51)) min_size = sizeof (u51); if (min_align > __alignof__ (u51)) min_align = __alignof__ (u51); if (min_size > sizeof (s52)) min_size = sizeof (s52); if (min_align > __alignof__ (s52)) min_align = __alignof__ (s52); if (min_size > sizeof (u52)) min_size = sizeof (u52); if (min_align > __alignof__ (u52)) min_align = __alignof__ (u52); if (min_size > sizeof (s53)) min_size = sizeof (s53); if (min_align > __alignof__ (s53)) min_align = __alignof__ (s53); if (min_size > sizeof (u53)) min_size = sizeof (u53); if (min_align > __alignof__ (u53)) min_align = __alignof__ (u53); printf ("min struct/union size =%d\n", min_size); printf ("min struct/union align=%d\n", min_align); return 0; }