[PIC®/AVR®/dsPIC®产品] 《求助》关于pic单片机的函数指针问题

[复制链接]
2121|5
 楼主| chinacn1989 发表于 2014-11-11 10:47 | 显示全部楼层 |阅读模式
本帖最后由 chinacn1989 于 2014-11-11 14:54 编辑

使用函数指针的时候发现不能调用函数指针;具体代码如下:
  1. unsigned char  JugeFunVoid(unsigned char (* _p_fun)(),unsigned char Runtimes)
  2. {
  3. unsigned char Runedtimes=0;
  4. while(Runedtimes<Runtimes)
  5.     {
  6.     Runedtimes++;
  7.     if(_p_fun()==0)
  8.         return 0;
  9.     }
  10.         return Runedtimes;
  11. }

调用:

问题就是程序不能正常运行,每次仿真运行到_p_fun()就不能运行了,一直停在这里!
if(_p_fun()==0)
        return 0;

为什么不能运行呢?

是我的代码有问题么?
还有就是我仿真的时候发现,在调用JugeFunVoid这个函数的时候,就直接执行的Write_Parameter(),
难道不是运行到if判断函数返回值的时候执行的么??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yklstudent 发表于 2014-11-11 19:19 | 显示全部楼层
这样试试:
1、if((*_p_fun)()==0)

2、if(JugeFunVoid(&Read_Parameter, 2))

3、if(JugeFunVoid(&Write_Parameter, 2))
祝楼主好运
yewuyi 发表于 2014-11-12 10:55 | 显示全部楼层
PIC16/18上面不建议使用函数指针,否则编译后的代码量可能超大。
diweo 发表于 2014-11-12 16:16 | 显示全部楼层
你传递进去的是Write_Parameter(),是函数的返回值,不是函数指针。
 楼主| chinacn1989 发表于 2014-11-13 13:00 | 显示全部楼层
yewuyi 发表于 2014-11-12 10:55
PIC16/18上面不建议使用函数指针,否则编译后的代码量可能超大。

确实,看到过相关资料说PIC单片机用函数指针不怎么好...
效率不高!
 楼主| chinacn1989 发表于 2014-11-13 13:00 | 显示全部楼层
yklstudent 发表于 2014-11-11 19:19
这样试试:
1、if((*_p_fun)()==0)

谢谢,我尝试下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:努力奋斗,努力学! 努力学习,努力帖! 学=学习;帖=发帖! 学习好了,就发帖和大家分享! 共同学习...

6

主题

272

帖子

0

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