Cast pointers via union on GCC