那么,有人能解释一下这应该做什么吗:
void(*信号(intsig,void(*func)(int)))(int);
它是从标准信号库中获取的定义
以名称开头:
信号
尽量向右走:
func)
您有一个带括号的参数列表,因此它是一个包含两个参数的函数:一个名为int的sig函数指针和一个名为func的函数指针(您可以稍后以同样的方式对其进行分析)
然后你打了另一个右翼,所以你向左走:
*信号(int-sig,void(*func)(int))
因此函数信号返回指向。。。某物让我们记下括号,再向右走,因为我们可以:
(*信号(intsig,void(*func)(int)))(int)
我们还有一个括号内的参数列表,因此signal返回一个指向函数的指针,该函数将int作为唯一的参数。然后再向左走:
void(*信号(intsig,void(*func)(int)))(int)
因此,函数signal返回指向函数的指针,该函数取int并返回void
是的,这种语言很奇怪,但至少是一致的