Hi, here is very simplified code of problem I have:
enum node_type { t_int, t_double }; struct int_node { int value; }; struct double_node { double value; }; struct node { enum node_type type; union { struct int_node int_n; struct double_node double_n; }; }; int main(void) { struct int_node i; i.value = 10; struct node n; n.type = t_int; n.int_n = i; return 0; }
And what I don't undestand is this:
$ cc us.c $ cc -std=c99 us.c us.c:18:4: warning: declaration does not declare anything us.c: In function ‘main’: us.c:26:4: error: ‘struct node’ has no member named ‘int_n’
Using GCC
without -std
option compiles code above without any problems (and the similar code is working pretty well), but it seems that c99
does not permit this technique. Why is it so and is it possible to make is c99
(or c89
, c90
) compatible? Thanks.