怎么理解signal函数的原型?
怎么理解signal函数的原型?signal函数的声明是
void (*signal (int signo, (* func)(int))) (int);
对于 *func我能明白是函数指针,但最前面的void 和 最后的 int怎么解释?这个函数的返回应该是什么型的?
另外,书上说为了简化写法,做如下定义:
typedef void Sigfunc(int);
则signal函数就可以写成:
Sigfunc *signal(int, Sigfunc *);
这有应该怎么来解释?
哪位老大能说明一下,谢了。 前面那个太兜圈子了,讲解后面的。
typedef void Sigfunc(int) 定义了一个函数类型。
任何有一个整形参数,返回void的函数都属于这个类型。
例如以下的函数都属于这个类型。
void eat (int footId);
void look (int peopleId);
void steal (int moneyId);
Sigfunc*声明这是上面这个类型的指针。
你可以写
Sigfunc* p ;
p=eat;
p=look;
p=steal;
所以由Sigfunc *signal(int, Sigfunc *)看出 signal是一个函数名。
它的参数是一个int 和Sigfunc型函数的指针。
它返回一个Sigfunc型函数的指针。
这样你再自己慢慢体会前面的,最好自己写个程序验证。 谢谢,我自己试着理解一下,呵呵。
页:
[1]