Je me suis posé cette question lorsque j'ai écrit un morceau de code "non intentionnel", que j'ai compilé avec succès et que j'ai obtenu le comportement souhaité. Plus tard, j'ai remarqué l'étrangeté du changement et j'ai réalisé que j'avais utilisé un ordre complètement inversé pour effectuer le typage des pointeurs de fonction. Je ne sais plus si l'erreur "involontaire" est en fait syntaxiquement correcte.
Convention habituelle :
typedef void* (*_malloc_fail_handler_ptr)(int) __attribute__ ((unused));
_malloc_fail_handler_ptr _malloc_fail_handler = NULL;
Mon code "involontaire" :
typedef void* (_malloc_fail_handler_ptr)(int) __attribute__ ((unused));
_malloc_fail_handler_ptr* _malloc_fail_handler = NULL;