The following is a typical pattern in many C programs. #include <stddef.h> typedef void (*hookfunc)(void *arg); hookfunc hook; void clear_hook() { hook = NULL; } Should this warn? test.c:7:8: warning: incompatible pointer types assigning 'void *' to 'hookfunc' -- Seo Sanghyeon