 However, this is not strictly the case here, since the function pointer is copied to be used outside the union.Note that this trick may not work on platforms where the size of data pointers and the size of function pointers is not the same.The fact remains that any conversion between function and data object pointers has to be regarded as an (inherently non-portable) implementation extension, and that no "correct" way for a direct conversion exists, since in this regard the POSIX and ISO standards contradict each other.