设为首页 加入收藏

TOP

C标准库函数中复杂的函数声明
2015-07-16 12:57:29 来源: 作者: 【 】 浏览:6
Tags:标准 函数 复杂 声明

中有一个复杂的函数声明。很叫人费解。


首先这个声明的主体是signal,这个应该没有争议。


向右看,(int sig, void (*handler)(int)),括号和参数,说明signal是一个函数。
第一个整形参数sig不用多讲,第二个参数比较复杂 void (*handler)(int),这是一个函数指针,它指向的函数接收一个整形参数,没有返回值。


向左看,发现一个*,说明signal函数返回的是一个指针。
向右看,向左看,是一对(),这怎么理解。(*)表明是一个函数指针,就是说signal函数的返回值是一个函数指针。


再向右看,(int),说明signal返回的函数指针指向的函数接受一个整形参数。
向左看,是void,说明signal返回的函数指针指向的函数没有返回值。


综合来看,这个声明,是一个名叫signal的函数声明,其主体是 signal(int, void (*)(int)),其返回值是void (*)(int)


分成这样写就清楚多了。


signal函数的作用是为某个信号设置新的处理函数(指针),如果成功,将返回之前的处理函数(指针)。


你可以将它返回的函数指针保存下来,方便以后重置该信号的处理函数。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++的Enum hack 下一篇读懂复杂C声明的黄金法则

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: