STM32
直播中

潘飘稚

7年用户 901经验值
私信 关注
[问答]

keil用c++编译含有rtos模块时的错误问题怎么解决?

近期看到一个哥们用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编译正确。大家有其他方法吗?我不想动第三方库。谢谢

回帖(1)

李慎梓

2024-5-9 15:29:16
C++比C有更加严格的类型转换,你的error显然至少是一个类型转换问题,再就是看看osPoolId是否是个指针类型?或者可以由void*转换而来?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分