The first time I saw unions used well is in the SDL project for the Event union.
The union contains a type variable. You might want to add a type variable to your union to be able to tell what it is holding. You will have to have everything else in the union be a struct, and all those structs need the same type variable as the first thing inside their definitions.
Here is a link to the SDL documentation for an example: http://sdl.beuc.net/sdl.wiki/SDL_Event