A union is a chunk of memory that is big enough to contain
the largest of the union's specified object types.
Unfortunately, C provides no way to test a union object to
determine what it contains. You must keep track yourself using a
parallel array or some other means.
If an array element's type is not known at compile time,
then you can combine the possible types into a union.
If you want to define a union, then instantiate the following
pattern:
union union name {
union variable declaration 1
...
union variable declaration n };