这个语句代表什么 [func ptr]

what does this statement represent [func ptr]

我遇到了一个奇怪的函数指针,

void * (*f1(void(*f2)(void)))(int ) ; 

这里的f1代表什么?

T (*f(U))(V)

f 声明为一个函数,它接受一个 U 和 returns 一个指向从 VT 的函数的指针(即 T (*)(V)).

所以 f1 是一个接受 void (*)(void) 和 returns 的函数 void* (*)(int).

命名类型使其更具可读性:

typedef void (*parameter)();
typedef void* (*result)(int);
result f1(parameter f2);

(名称 "f2" 除了帮助阅读代码的人解释它之外没有任何用处。)