Code::Blocks Forums

User forums => General (but related to Code::Blocks) => Topic started by: rabidus on June 09, 2005, 06:11:45 pm

Title: hinting to anonymous union do not work?
Post by: rabidus on June 09, 2005, 06:11:45 pm
Hello,

Is hinting to anonymous union work?

something like this:
>>>>>>> BLOCK START <<<<<<<<<<
struct RGB{
   float r,g,b;
};
struct HLS{
   float h,l,s;
}
struct Pixel{
   union{
      struct RGB rgb;
      struct HLS hls;
   };
} my_pixel;
>>>>>>> BLOCK END <<<<<<<<<<
 
and hinting do not work if I write:
my_pixel.rgb.??????
Title: hinting to anonymous union do not work?
Post by: David Perfors on June 09, 2005, 06:54:57 pm
after struct Pixel you mis ";" (without quotes)
Title: hinting to anonymous union do not work?
Post by: eques.m on June 10, 2005, 07:37:09 pm
No, i have not missed enything. Code is compilable properly, and work as it should. If here is any mistake, it was made during post writing.
Title: hinting to anonymous union do not work?
Post by: thomas on June 11, 2005, 07:24:38 pm
Quote from: mispunt
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