gpt4 book ai didi

来自标准信号库的 C 声明

转载 作者:太空狗 更新时间:2023-10-29 17:07:28 25 4
gpt4 key购买 nike

那么有人可以解释一下这应该做什么吗:

void (*signal(int sig, void (*func)(int)) ) (int);

这是取自标准信号库的定义。

最佳答案

从名字开始:

signal

尽可能向右走:

signal(int sig, void (*func)(int))

你有一个带括号的参数列表,所以它是一个带有 2 个参数的函数:一个名为 sigint 和一个名为 func 的函数指针(后面可以用同样的方法分析)。

然后你点击了另一个右括号,所以你向左走:

*signal(int sig, void (*func)(int))

所以函数 signal 返回一个指向……某物的指针。让我们取下括号并再次向右走,因为我们可以:

(*signal(int sig, void (*func)(int)) ) (int)

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

void (*signal(int sig, void (*func)(int)) ) (int)

因此函数 signal 返回指向采用 int 并返回 void 的函数的指针。

是的,这种语言很奇怪,但至少它是一致的。 :)

关于来自标准信号库的 C 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4332743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com