The following code warns on clang, but does not warn on GCC.
typedef int unary_int_func(int arg);
unary_int_func *func;
void set_func(void *p) {
func = p;
}
test.c:5:8: warning: incompatible pointer types assigning 'void *' to
'unary_int_func *'
Try GCC in pedantic mode. Standard says function pointers are not
compatible with other pointers.
This is true, but we should be compatible with GCC where possible. I changed this to be an extension warning, so it won't warn by default anymore (unless you specify -pedantic). You should also get a better message now.
Thanks,
-Chris