打印
[PIC®/AVR®/dsPIC®产品]

pic18函数指针怎么写啊?

[复制链接]
1400|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a63415558|  楼主 | 2015-1-22 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

struct DIStruct                                
{
    uchar DI3, DI2, DI1, DI0;
    void (*operate)(uchar, uchar);   
}DIStruct;

void UA(uchar num, uchar flag)
{
        ...
}

struct DIStruct table1[]=                        
{
    { 0x02, 0x01, 0x01, 0x00, UA }



(*(table1[0].operate))(1, 0);

编译错误提示:can't generate code for this expression
沙发
diweo| | 2015-1-22 14:40 | 只看该作者
本帖最后由 diweo 于 2015-1-22 14:44 编辑

struct DIStruct table1[]=                        
{
    { 0x02, 0x01, 0x01, 0x00, UA }


这个是你代码里面直接复制过来的么?

使用特权

评论回复
板凳
a63415558|  楼主 | 2015-1-22 14:48 | 只看该作者
不是,是我后来加上去的,因为有数组里很多项。
就这条报错(*(table1[0].operate))(1, 0);

使用特权

评论回复
地板
兰天白云| | 2015-1-22 16:31 | 只看该作者
单独写个table1[]= 的指针看对不对

使用特权

评论回复
5
yklstudent| | 2015-1-22 22:45 | 只看该作者
(*table1[0].operate)(1, 0);

使用特权

评论回复
6
huangxz| | 2015-1-23 22:16 | 只看该作者
table1[0].operate(1, 0);

使用特权

评论回复
7
diweo| | 2015-1-24 14:19 | 只看该作者
a63415558 发表于 2015-1-22 14:48
不是,是我后来加上去的,因为有数组里很多项。
就这条报错(*(table1[0].operate))(1, 0); ...

我试了一下你的代码,除了那个大括号,没问题呀。

使用特权

评论回复
8
949155525| | 2015-1-25 23:10 | 只看该作者
pic不建议用函数指针,他的函数指针效率不高

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝