[PIC®/AVR®/dsPIC®产品] pic18函数指针怎么写啊?

[复制链接]
1715|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[]= 的指针看对不对
yklstudent 发表于 2015-1-22 22:45 | 显示全部楼层
(*table1[0].operate)(1, 0);
huangxz 发表于 2015-1-23 22:16 | 显示全部楼层
table1[0].operate(1, 0);
diweo 发表于 2015-1-24 14:19 | 显示全部楼层
a63415558 发表于 2015-1-22 14:48
不是,是我后来加上去的,因为有数组里很多项。
就这条报错(*(table1[0].operate))(1, 0); ...

我试了一下你的代码,除了那个大括号,没问题呀。
949155525 发表于 2015-1-25 23:10 来自手机 | 显示全部楼层
pic不建议用函数指针,他的函数指针效率不高
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部