当前位置: 技术问答>linux和unix
signal函数定义该怎么理解?
来源: 互联网 发布时间:2015-02-12
本文导语: #include void (*signal (int s i g n o, void (*f u n c)(int))) (int); 请问这个函数最后的那个int是要表达个什么意思?为什么要这么写,有什么好处? | 这是C语言的标准语法。 最后的一个INT,其实是SIGNAL返...
#include
void (*signal (int s i g n o, void (*f u n c)(int))) (int);
请问这个函数最后的那个int是要表达个什么意思?为什么要这么写,有什么好处?
void (*signal (int s i g n o, void (*f u n c)(int))) (int);
请问这个函数最后的那个int是要表达个什么意思?为什么要这么写,有什么好处?
|
这是C语言的标准语法。
最后的一个INT,其实是SIGNAL返回函数的一部分:表明SIGNAL函数返回一个函数指针,指向一个带有一个INT参数的函数。(其实这个返回的类型,与SIGNAL本身第二个参数的类型是一样的)。
所以上面的声明与下面是一样的(新定义了SIG_T这个类型):
typedef void (*sig_t) (int);
sig_t signal(int sig, sig_t func);
最后的一个INT,其实是SIGNAL返回函数的一部分:表明SIGNAL函数返回一个函数指针,指向一个带有一个INT参数的函数。(其实这个返回的类型,与SIGNAL本身第二个参数的类型是一样的)。
所以上面的声明与下面是一样的(新定义了SIG_T这个类型):
typedef void (*sig_t) (int);
sig_t signal(int sig, sig_t func);