是c语言吗_C语言程序设计——这个函数原型你看懂了吗

2303fb6c9be31606ae534dbda22dc84b.png

虽然过去了好多年,但我仍然清楚地记得自己第一次看到signal函数原型时的惊讶。

学习UNIX环境C编程的朋友都知道,信号是绕不过去的一道坎,而信号处理的第一重要函数就是signal()。

什么都不说了,直接上菜:

#include void (*signal(int signo, void (*func)(int)))(int);

看到这个函数原型,您知道signal()函数怎么用吗?

b22c35535e51fde924eeffad99748534.png

说明一下,这个函数声明没有写错,而且符合ANSI C语法。

当然,经过长达10分钟的仔细分析后,对大部分C语言程序员来说,signal的函数声明还是可以看懂:

(1)signal是一个函数;

(2)函数有两个参数,函数有返回值;

(3)第一个参数为int类型;

(4)第二个参数为函数指针,并且函数指针对应的函数有一个参数,为int类型;

(5)signal的返回类型为函数指针,并且函数指针对应的函数有一个参数,为int类型。

可能是这个声明太烧脑了,现在Linux中对signal函数这样解释:

在Linux命令行中,输入man signal命令,得到下面的信息:

NAME       signal - ANSI C signal handlingSYNOPSIS       #include        typedef void (*sighandler_t)(int);       sighandler_t signal(int signum, sighandler_t handler);
af500c1abd725f7c9fd1b1bc9fa1d7e3.png

这样的声明,基本上C语言程序员都能看懂了。

如果您看到最上面的signal函数声明,有点头晕,非常抱歉,就当刚刚喝了一杯茅台酒吧

d1ff282292358410937895aa93ee0047.png

谢谢您的阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值