解决新keilV5.43.1中转为Arm Compiler 6的问题error: unknown type name ‘__forceinline’
摘要: 在编译韦东山FreeRTOS例程时出现"unknown type name '__forceinline'"等头文件错误。解决方法是在Keil的魔法棒选项中修改C/C++配置,添加"-std=gnu90"编译选项强制使用gnu90标准。错误根源是代码基于较旧的gnu89/C90标准编写,而新编译器默认使用gnu11标准导致不兼容。该问题参考了ST社区
问题:
最近在学习FreeRTOS,在编译韦东山老师的例程时,编译出错,
报了一大堆错误,都是些关于头文件、关键字、定义的错误,一脸懵
error: unknown type name ‘__forceinline’

解决方法:
在魔法棒这里做出修改

然后代码这里要找到FreeRTOS的源码中,(我这里用的芯片是stm32f103,所以用的ARM_CM3,别的芯片自己找对应的替换)
FreeRTOS\Source\portable\GCC\ARM_CM3,把ARM_CM3中的文件替换到
自己调试的源码中FreeRTOS_01_create_task\FreeRTOS\Source\portable\RVDS\ARM_CM3
终于见到久违的无错误,撒花,哈哈哈😄
最终分析原因:
FreeRTOS编译错误,本质上就是 “为gnu89/C90时代写的代码,跑到了默认使用gnu11的新编译器上” 所导致的不兼容。
参考了st论坛的大神
https://shequ.stmicroelectronics.cn/thread-615410-1-1.html
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)