views:

113

answers:

3

For example, say we have a union

typedef union {
unsigned long U32;
float f;
}U_U32_F;

When a variable of this union type is declared, is there a way to set an initial value?

U_U32_F u = 0xffffffff;   // Does not work...is there a correct syntax for this?
+8  A: 

Use an initializer list:

U_U32_F u = { 0xffffffff };

You can set other members than the first one via

U_U32_F u = { .f = 42.0 };
Christoph
Just a note that the 2nd example is a C99 feature that's not supported by all compilers.
Michael Burr
+1  A: 

Try U_U32_F u = {0xffffffff};

Alexander Gessler
+1  A: 

Note that per-member union initialization doesn't work on pre-C99 compilers, of which there is a depressing number out there. The current Microsoft C compiler doesn't support it, for example. (I vaguely recall it doesn't even support first-member initialization, which goes back to K&R II, but I might be wrong about that.)

ceo
Microsoft more or less abandoned C and wants you to use C++ (or even better yet: C#); I'm quite content with MinGW, now that gcc-4.4 is out; in the future, Clang/LLVM might be a viable alternative as well if you're looking for a free compiler
Christoph