打印
[uCOS/RTOS]

中断中发信号量,却出现ossempost is invalid的错误

[复制链接]
994|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maverics|  楼主 | 2016-7-22 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 maverics 于 2016-7-22 17:53 编辑

目前遇到一个问题,各个task和信号量的定义在main.c文件中,中断isr在另一个.c文件中,在isr中调用OSSemPost发送一个信号量,就提示implicit declaration of function ossempost is invalid in c99, 类似于一个.c文件调用另一个.c文件中的变量,显示未定义一样,请问该如何解决,谢谢

相关帖子

沙发
JasonWangSE| | 2016-7-22 17:52 | 只看该作者
extern

使用特权

评论回复
板凳
maverics|  楼主 | 2016-7-22 17:55 | 只看该作者

不好意思,刚才我的问题没有表述清楚,实际上提示ossempost is invalid in c99,我该当如何

使用特权

评论回复
地板
JasonWangSE| | 2016-7-23 18:07 | 只看该作者
maverics 发表于 2016-7-22 17:55
不好意思,刚才我的问题没有表述清楚,实际上提示ossempost is invalid in c99,我该当如何 ...

按正常的做法应该是在使用的文件中include <os.h>,然后才能使用os的API,如果想偷懒就extern OS_SEM_CTR  OSSemPost (OS_SEM *p_sem, OS_OPT opt, OS_ERR *p_err);不过如果编译错误信息就是你贴上来的那句话,大小写也一样,那要注意你调用的地方是不是OSSemPost没有区分大小写

使用特权

评论回复
5
maverics|  楼主 | 2016-7-25 09:11 | 只看该作者
JasonWangSE 发表于 2016-7-23 18:07
按正常的做法应该是在使用的文件中include ,然后才能使用os的API,如果想偷懒就extern OS_SEM_CTR  OSSe ...

不好意思,OSSemPost是我在帖子里小写了,文件中没有小写,我通过.c文件中include相关os.h文件,目前OSSemPost已经不报错了,但出现新的问题,就是调用的信号量显示没有定义,其实和上一个问题很相似,就是main.c中定义了该信号量,但是另一个.c文件中调用,所以该.c文件编译报错,如果对于非os的裸奔系统,通常可以include来解决,但是在有os的系统中,该信号量如何在期望的.c文件中使用,请指点,谢谢。。。

使用特权

评论回复
6
JasonWangSE| | 2016-7-25 12:04 | 只看该作者
maverics 发表于 2016-7-25 09:11
不好意思,OSSemPost是我在帖子里小写了,文件中没有小写,我通过.c文件中include相关os.h文件,目前OSSe ...

这个是C语言编程问题,跟用不用os没关系,你是刚学C语言吗?用extern

使用特权

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

本版积分规则

9

主题

37

帖子

1

粉丝