void (*signal(int sig, void (*) ())(int)
时间: 2023-07-15 12:14:28 浏览: 64
这是一个 C 语言中的函数声明,它的返回值类型是一个指向函数的指针,该函数接受一个整型参数,并返回一个指向函数的指针,该函数又接受一个整型参数。这个函数的作用是为指定的信号设置对应的处理函数,并返回该信号原来的处理函数。在该函数中,sig 参数表示要设置处理函数的信号编号,void (*)() 表示一个参数为 void,返回值为 void 的函数指针类型。
相关问题
void (*signal(int sig, void (*func) (int))) (int)理解
这是一个函数指针类型的声明,其返回值为一个函数指针,该函数指针指向一个具有一个 int 类型参数和返回值类型为 int 的函数。该函数的参数 sig 表示信号编号,参数 func 是一个指向函数的指针,该函数将在接收到信号时被调用。函数 signal 的返回值是一个函数指针,该函数指针指向之前与该信号相关联的函数,如果之前没有与该信号相关联的函数,则返回 SIG_ERR。该函数可以用于注册信号处理函数。
void (*signal(int sig,void (*func)(int)))(int),此函数是linux中信号处理函数的原型,由于语法晦涩,很荣幸的也出现在了《C陷阱与缺陷中》,理解的难点在于void ( *signal(xxx) )(int),这里与我们平常看到的void ( *p )(int) 函数指针的写法有差异,关键点在于要把看成*signal(xxx) 整体;这段话说的差异是什么 我觉得没差异啊
这段话中所说的差异指的是函数指针的写法与我们平常看到的函数指针写法有一些微小的差别。平常我们看到的函数指针的写法是类似于 void (*p)(int) 的形式,而这里的函数指针写法是 void (*signal(xxx))(int) 的形式,把 signal(xxx) 看成整体。虽然看起来有些不同,但本质上是一样的,都是指向函数的指针。
阅读全文