From: Konovalov,
Vadim V. \(Vadim\)** C. ** <vko...@al...> - 2007-03-30 08:18:58
|
> > Namely, sizeof(*(Cclosure)0) is 16 in GCC and 20 in MSVC++ > > Hence the "-1" difference. >=20 > OUCH. > presumably there is the same difference for all other types? The difference is inside this: # Unspecified length of arrays in structures: # struct { ...; ...; type x[unspecified]; } # Instead of sizeof(..) you'll always have to use offsetof(..,x). #if defined(GNU) # GNU-C is able to work with arrays of length 0 #define unspecified 0 #elif 0 # Usually one would omit the array's limit #define unspecified #else # However, HP-UX- and IRIX-compilers will only work with this: #define unspecified 1 #endif This results in treating xxxx[unspecified] as extra "4" which confuses = things. Attached is the patch against CVS version, but I beleive HP-UX and IRIX = compilers should do as they do, but most compilers should fall into the = default state. Given that not only MSVC++ 4.0 and 5.0 are supported (I only tried 6.0 = but instructions also mention 7.0) so why listing versions at all? One can say "MSVC version 4 and above" but than again, who tried latest = versions of compiler? Vadim. |