Rationale for C, Revision 5.10, April-2003:
Even with an explicit cast, it is invalid to convert a function pointer to an object pointer or a pointer to void, or vice versa.
Why exactly it is invalid to convert a function pointer to a pointer to void, or vice versa?
What are the conceptual / technical obstacles to allow such conversion?
Reason: better understanding of the standard.
UPD. FYI: In POSIX dlsym returns valid object opened by dlopen()
as void*
. Then such void*
object is usually converted to a function pointer (which is invalid per C) and called. More details: link.