如何理解那个函数/指针声明?

How to understand that function / pointer declaration?

在 C 中,可以像这样声明指向函数的指针:

void (*Func1)(int)

我相信我已经理解这意味着什么(在这种情况下,一个指向 returns void 并接受 int 作为参数的函数的指针)以及如何声明并使用此类指针。

但是,我现在遇到了如下声明:

void (*Func2(int, int))(int)

我很难理解这种语法。这里究竟声明了什么?可能它是一个指向函数的指针,但我一直认为指针名称后面的圆括号是必要的,所以我现在完全不确定。

任何人都可以逐步解释上述声明的含义吗?

来自https://cdecl.org/?q=void+%28*Func2%28int%2C+int%29%29%28int%29

void (*Func2(int, int))(int)

declare Func2 as function (int, int) returning pointer to function (int) returning void