union による type punning は、C99やC11では大丈夫になったのではないか。
最後に代入したメンバ以外のメンバからの読み出しは、合法になったようだが。
よく読んでないので分からん:

https://stackoverflow.com/questions/11639947/is-type-punning-through-a-union-unspecified-in-c99-and-has-it-become-specified