If I declare a Union as:
union TestUnion { struct { unsigned int Num; unsigned char Name[5]; }TestStruct; unsigned char Total[7]; };
There is no way to tell. You should have some additional flags (or other means external to your union) saying which of the union parts is really used.