你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

keil 用c++编译含有rtos模块时的错误

[复制链接]
Tony_Duan 提问时间:2016-8-9 22:12 /
近期看到一个哥们用c++写嵌入式,感觉蛮有趣,如果当初我的程序要是能用类就轻松多了,所以也想尝试一下。虽然不会c++但是还是多少会用简单的class,这个c#上用了不少。我的工程包括usb和 rtos,设置使用cpp编译,c99通过的程序编译错误一大堆,主要在usb和cmsis_os里,这里随便粘贴其中一条错误C:/Users/ME/STM32Cube/Repository/STM32Cube_FW_F1_V1.4.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c(791): error:  #513: a value of type "void *" cannot be assigned to an entity of type "osPoolId",程序代码如下thePool = pvPortMalloc(sizeof(os_pool_cb_t));由于不懂c++,查阅资料得知c99编译器是允许暗含转换的,但是c++不允许,因此出现错误。我的程序是用cubemx生成的,难道我要在错误的地方全部加上强制转换吗?比如thePool = (osPoolId)pvPortMalloc(sizeof(os_pool_cb_t)),改写之后此条语句cpp编译正确。大家有其他方法吗?我不想动第三方库。谢谢
收藏 评论6 发布时间:2016-8-9 22:12

举报

6个回答
moyanming2013 回答时间:2016-8-10 10:04:50
C++比C有更加严格的类型转换,你的error显然至少是一个类型转换问题,再就是看看osPoolId是否是个指针类型?或者可以由void*转换而来?
Tony_Duan 回答时间:2016-8-10 18:17:35
moyanming2013 发表于 2016-8-10 10:04
C++比C有更加严格的类型转换,你的error显然至少是一个类型转换问题,再就是看看osPoolId是否是个指针类型 ...

谢谢。关键cmsis_os 是系统自带的,我不想改,有其他办法吗
moyanming2013 回答时间:2016-8-11 09:50:17
Tony_Duan 发表于 2016-8-10 18:17
谢谢。关键cmsis_os 是系统自带的,我不想改,有其他办法吗

CMSIS已是兼容c和c++的,你的代码可能ST在移植freertos时不兼容c++所致(这种可能性很小,你需要核实下自己的修改部分)。
既然你用了CMSIS-RTOS那么底层试试rtx也是一样的。
Tony_Duan 回答时间:2016-8-11 11:29:16
moyanming2013 发表于 2016-8-11 09:50
CMSIS已是兼容c和c++的,你的代码可能ST在移植freertos时不兼容c++所致(这种可能性很小,你需要核实下自 ...

大师,我水平不咋滴,就是爱玩,玩这个直接做板实验的,所以基础知识很差。我的程序是用stm32cubemx直接生成的,使用了RTOS,用c99编译没问题,程序在板子上跑的也正常。但是用cpp编译就出现了问题,其实我什么都没改动。为了测试,我用stm32cubemx生成不同的程序,但是只要程序包含有rtos或者usb(我看是第三方),用c++编译就是出错。我曾经对这几个块设置用c99编译而其他用c++编译,没有错误但是连接是有个函数找不到而出错。我也看了说明,CMSIS-RTOS是兼容c++的。但是那些错误的代码都是没有强制数据类型转换,能在哪里设置让c++忽略这些错误吗?或者有其他办法吗,再次谢谢
moyanming2013 回答时间:2016-8-11 12:16:52
Tony_Duan 发表于 2016-8-11 11:29
大师,我水平不咋滴,就是爱玩,玩这个直接做板实验的,所以基础知识很差。我的程序是用stm32cubemx直接 ...

可能是pvPortMalloc对C++和C的兼容性做的不好,比如至返回void*类型的,这个只能强制转换下你真实的指针了。
nashchen17 回答时间:2016-8-11 13:02:09
這部分我還不是很了解,感謝分享文章與經驗

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版