You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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标准:
    1. 打开工程选项(Project -> Options for Target)
    2. 切换到Compiler标签页,找到Language选项
    3. 将C标准设置为C99或更高版本
  • 兼容inline关键字定义:若上述操作无效,可修改portmacro.h文件,添加编译器兼容的inline定义:
    在文件开头加入:
    #ifndef inline
    #define inline __inline
    #endif
    
    或直接将文件中所有inline替换为对应编译器支持的关键字(ARMCC用__inline,GCC需确保已开启C99标准)

内容的提问来源于stack exchange,提问作者Mohamed Radwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:42:28