Example: A function that takes a function (that takes a function (that …) and an int) and an int.
typedef void(*Func)(void (*)(void (*)(...), int), int);
It explodes recursively where (...). Is there a fundamental reason this can’t be done or is there another syntax? It seems to me it should be possible without a cast. I’m really trying to pass a dispatch-table but I could figure that out if I could just pass this one type.
You can wrap the function pointer in a struct:
I’m not sure if this is an improvement on casting. I suspect that it’s impossible without the struct because C requires types to be defined before they are used and there’s no opaque syntax for typedef.