打印

hitech 9.83 函数指针的编译问题

[复制链接]
2236|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linarm|  楼主 | 2012-11-26 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的环境:hitech 9.83 pro              PIC16f1827
我源码用到了函数指针,但编译时编译器报告“Error   [712] main.c; 389. can't generate code for this expression”


代码如下:
void thread_thsensor(void)
{

do

{

...

}while(1);
}

int main(void)
{

OS_Init();


OS_Task_Create(0, (unsigned int)thread_slip);//报错[712]

OS_Task_Create(0, (unsigned int)thread_thsensor);//报错[712]
    OS_EI();
    OS_Run();
}

OS_Task_Create(unsigned int priority, unsigned int fun_addr)是原型
给我帮我看看,或者给点线索啊!
沙发
程序会不会| | 2012-11-27 16:15 | 只看该作者
函数没声明吧

使用特权

评论回复
板凳
yewuyi| | 2012-11-27 16:34 | 只看该作者
int main(void)//一般PIC单片机不写成这样,直接void main(void)
{
OS_Init();//没有原型
OS_Task_Create(0, (unsigned int)thread_slip);//没有原型
OS_Task_Create(0, (unsigned int)thread_thsensor);//没有原型,函数名一般不能直接作为变量,如果使用函数指针的话,也应该做相应的定义后才能使用
    OS_EI();//没有原型
    OS_Run();//没有原型
}

使用特权

评论回复
地板
linarm|  楼主 | 2012-12-10 16:11 | 只看该作者
结贴,其实这个问题是因为,在这个编译器不能把函数指针强制转换成16bit的整型。所以出现编译错误。因为我在pic16f1827上跑了操作系统,必须用函数指针,我换了方法绕过去了。
另外个人感觉,picc的9.82版本很不稳定,很难控制,求好用的版本。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝