标准信号库中的C声明

那么,有人能解释一下这应该做什么吗:

void(*信号(intsig,void(*func)(int)))(int);

它是从标准信号库中获取的定义

以名称开头:

信号

尽量向右走:

func)

您有一个带括号的参数列表,因此它是一个包含两个参数的函数:一个名为intsig函数指针和一个名为func的函数指针(您可以稍后以同样的方式对其进行分析)

然后你打了另一个右翼,所以你向左走:

*信号(int-sig,void(*func)(int))

因此函数信号返回指向。。。某物让我们记下括号,再向右走,因为我们可以:

(*信号(intsig,void(*func)(int)))(int)

我们还有一个括号内的参数列表,因此signal返回一个指向函数的指针,该函数将int作为唯一的参数。然后再向左走:

void(*信号(intsig,void(*func)(int)))(int)

因此,函数signal返回指向函数的指针,该函数取int并返回void

是的,这种语言很奇怪,但至少是一致的

发表评论