I'm attempting to globally initialise a union as in the following example:
#include <cstdio>
typedef union {
char t[4];
int i;
} a;
enum {
w = 5000,
x,
y,
z
};
a temp = {w};
int main() {
printf("%d %d %d %d %d\n", temp.t[0],temp.t[1],temp.t[2],temp.t[3],temp.i);
return 0;
}
However, if you run the code, you'll note that neither of temp.i or temp.t[...] actually give the correct item i initialised the union with. I'd imagine this would be avoided if I could manually initialise the integer member, but unfortunately I can't. I also can't change the ordering of elements within the struct (swapping the int and char order initialises everything properly) - they're actually provided by an external library. My question is this: how can I set the integer member of the structure globally, rather than the char[4] member (or, in this case, just the first element of the char[])?
EDIT: Also, is there a strictly-c++ solution to this problem? i.e. one where named struct initialisation doesn't work (because it doesn't exist in the language)?