在ANSI标准中,signal()的声明如下:
void (*signal(int sig,void (*func)(int)))(int)
signal是一个函数:
1.它返回一个函数指针void (*p) (int)
2.它的两个参数是一个是int和一个函数指针void (*p) (int)
下面用typedef进行简化:
typedef void(*ptr_to_func)(int);
ptr_to_func signal(int,ptr_to_func);
这样看起来就很好理解啦
网上的一个例子:
#include <stdio.h>
enum { RED, GREEN, BLUE };
void OutputSignal(int sig)
{
printf("The signal you /'ve input is: ");
switch(sig)
{
case RED:
puts("RED!");
break;
case GREEN:
puts("GREEN!");
break;
case BLUE:
puts("BLUE!");
break;
}
}
void ( *signal( int sig, void (*func)(int) ) ) (int)
{
puts("Hello, world!");
func(sig);
return func;
}
int main(void)
{
(*signal(GREEN, &OutputSignal))(RED);
return 0;
}
Output:
Hello, world!
The signal you 've input is: GREEN!
The signal you 've input is: RED!
微信扫码关注
更新实时通知
评论列表: