union my_data {
int id;
char name[32];
float lenght;
};
typedef union my_data Data;
union my_data d1;
Data d2;
typedef union my_data {
int id;
char name[32];
float lenght;
} Data;
Data d1, d2;
Remark that my_data is a tag, not a type name.
Check this article: Tag vs. Type Names