Keil5中使用FreeRTOS遇portmacro.h报错求助
问题描述
使用Keil Version 5,已安装FreeRTOS所需全部依赖包,但编译时反复出现portmacro.h相关错误,具体错误信息如下:
C:/Users/Mohamed Radwan/AppData/Local/Arm/Packs/ARM/CMSIS-FreeRTOS/10.0.1/Source/portable/GCC/ARM_CM4F\portmacro.h(130): error: unknown type name 'inline' C:/Users/Mohamed Radwan/AppData/Local/Arm/Packs/ARM/CMSIS-FreeRTOS/10.0.1/Source/portable/GCC/ARM_CM4F\portmacro.h(130): error: expected ';' after top level declarator
解决方法
- 匹配编译器与port文件夹:你当前引用的是GCC版本的port文件(
portable/GCC/ARM_CM4F),但Keil默认编译器为ARMCC。若使用ARMCC编译,需切换到portable/ARM/ARM_CM4F目录下的port文件,删除原GCC port的引用,将ARM版本的port源文件添加到工程。 - 开启C99标准支持:若确实使用GCC编译器,需在Keil工程中开启C99标准:
- 打开工程选项(Project -> Options for Target)
- 切换到
Compiler标签页,找到Language选项 - 将C标准设置为
C99或更高版本
- 兼容inline关键字定义:若上述操作无效,可修改
portmacro.h文件,添加编译器兼容的inline定义:
在文件开头加入:
或直接将文件中所有#ifndef inline #define inline __inline #endifinline替换为对应编译器支持的关键字(ARMCC用__inline,GCC需确保已开启C99标准)
内容的提问来源于stack exchange,提问作者Mohamed Radwan
相关产品推荐
相关产品推荐

