形式1:void (*signal(int signum,void(* handler)(int)))(int);
这是信号函数的声明。
或者是形式2:
typedef void (*sig_t)(int);
sig_t signal(int signum, sig_t handler);
形式1与形式2是等价的,为什么能等价?下面从typedef 讲起:
用typedef 定义一个数组:
typedef int array[10];
array b;就相当于 int b[10];就是用b去代替"int array[10];"中的array。
用typedef 定义一个指针:
typedef int *p;
p px;就相当于 int *px 就是用px去代替" int *p;"中的p。
于是
typedef void (*sig_t)(int);
就是定义一个指针 "变量", sig_t就是一个指向函数的指针,一个指向 带1个参数返回值为空的函数 的指针。
当使用typedef声明后,sig_t就成了一个函数指针“类型”。
把形式1简化一下就是:
void (*signal(参数1,参数2) )(int); //其中参数2是一个函数指针。
以下省略几十个字。
。。。 。。。 |