after struct Pixel you mis ";" (without quotes)
A valid point
If your code does
not miss that semicolon, it compiles without problems and works perfectly on gcc 3.4.2 MingW as well as gcc 3.4.3 FC3 -- tried both.
Depending on which compiler you use, you may get different results, however, and in particular, you may get different results when compiling C and C++.
ISO C++ does not allow anonymous structs, some compilers respect that, some others don't (and some do in only certain versions!).
In this case, when upgrading compiler you may suddenly face your code to stop compiling when it would before, so the best way is probably to not use anonymous structs at all.
gcc 3.x accepts this construct for backwards-compatibility:
http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/Unnamed-Fields.html#Unnamed-Fields