No, you cannot declare recursive function types in C. Except inside a structure (or an union), it’s not possible to declare a recursive type in C.
Now for the void *
solution, void *
is only guaranteed to hold pointers to objects and not pointers to functions. Being able to convert function pointers and void *
is available only as an extension.