打印

高手的程序,看不懂,大家帮忙看看。

[复制链接]
8418|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyf9908|  楼主 | 2011-1-2 21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近看一个资深工程师写的代码,如下几行

1:  typedef void (*fptr)();    /* function pointer */
2: fptr IRQ_HandlerTable[19]; /* Interrupt Handler Table */
3: irqNum = inpw(AIC_ISNR);  /* read the interrupt source number */
4: (*IRQ_HandlerTable[irqNum])();

  这第一行这样作类型定义有什么作用?
   这最后一行到底在干啥?
  着实看不懂啊,请高手帮忙解析下,谢谢!

相关帖子

沙发
eastzsp| | 2011-2-7 17:30 | 只看该作者
第一行是定义函数指针的原型。
最后一行是从函数指针数组中取得irqNum位置的函数执行。
建议你看看C语言函数指针的定义和调用方法。

使用特权

评论回复
板凳
zwj19861114| | 2011-2-19 16:37 | 只看该作者
一行都没看懂:lol

使用特权

评论回复
地板
satellite999| | 2011-2-21 17:05 | 只看该作者
对函数进行调用

使用特权

评论回复
5
accessory2008| | 2011-3-1 02:10 | 只看该作者
RE 2 楼

使用特权

评论回复
6
walnutcy| | 2011-3-2 09:47 | 只看该作者
仔细看下C语言吧,或者看下开源代码,一般都有函数指针的高级应用

使用特权

评论回复
7
SLEET1986| | 2011-3-19 09:06 | 只看该作者
函数指针--第一行定义函数指针类型,第二行定义了一组函数指针,最后一行执行函数指针。

使用特权

评论回复
8
hgjinwei| | 2011-3-20 11:14 | 只看该作者
这人和我差不多,不懂英语,却死要用英语注释;

1: typedef void (*fptr)(void);   /* 定义一个中断响应函数指针类型 */
2: fptr IRQ_HandlerTable[19]; /* 中断服务例程函数表,用于存放中断服务例程入口地址,实际就是一个矢量表 */
3: irqNum = inpw(AIC_ISNR);  /* 获得中断例程号(PS,这个irqNum 如果改为irq_id 或许更恰当点) */
4: (*IRQ_HandlerTable[irqNum])();  /* 执行中断服务例程,响应中断 */

使用特权

评论回复
9
chjmacong| | 2011-9-9 13:41 | 只看该作者
楼上高手!
学习了!

使用特权

评论回复
10
tangzzbb| | 2011-9-22 18:22 | 只看该作者
呵呵,看来很多人只知道数据指针,不常用函数指针啊。

使用特权

评论回复
11
aaron96031| | 2011-9-25 14:55 | 只看该作者
强人 很多, 解释得很透

使用特权

评论回复
12
mcu_electron| | 2011-9-30 12:40 | 只看该作者
学习!

使用特权

评论回复
13
genefang| | 2011-10-4 12:42 | 只看该作者
2l,8l正解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

176

帖子

0

粉丝