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