I have the following struct:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
};
};
Whe
element
is the name of the union, not the name of a member of type1
. You must give union element
a name:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
} x;
};
then you can access it as:
struct type1 *f;
f->x.e
If f is a pointer, then you may access "element" using f->element, or (*f).element
Update: just saw that "element" is the union name, not a member of the struct. You may try
union element {
struct type3 *e;
int val;
} element;
So the final struct would be like this:
struct type1 {
struct type2 *node;
union element {
struct type3 *e;
int val;
} element;
};
And now you can access element members like this, through a type1 *f:
struct type1 *f;
// assign f somewhere
f->element.val;