解决rt_list_for_each_entry Keil MDK 编译失败

前言

Keil MDK编译失败

packages\lpm-v0.1.1\src\x_mem.c(101): warning:  #223-D: function "typeof" declared implicitly
      list_for_each_entry(tab, &x_mem->tab_head, node)
packages\lpm-v0.1.1\src\x_mem.c(101): error:  #29: expected an expression
      list_for_each_entry(tab, &x_mem->tab_head, node)
packages\lpm-v0.1.1\src\x_mem.c(101): error:  #29: expected an expression
      list_for_each_entry(tab, &x_mem->tab_head, node)
packages\lpm-v0.1.1\src\x_mem.c(101): error:  #18: expected a ")"
      list_for_each_entry(tab, &x_mem->tab_head, node)
packages\lpm-v0.1.1\src\x_mem.c(101): error:  #29: expected an expression
  • 最终确认为:typeof,Keil MDK不能识别
  • 原来typeof是GNU C的关键字,但Keil MDK不支持

 

解决方法

  • keil MDK需要设置一下,增加 --gnu 的编译选项
【options】 -- 【C/C++】 -- 【Misc Controls】,增加--gnu

2021-03-12_150129.png

  • 增加完就可以正常编译通过了

 

总结

  • 使用RT-Thread Studio,无需修改,可以正常的编译,因为使用gcc编译环境
  • Keil MDK,使用ARMCC编译

猜你喜欢

转载自blog.csdn.net/tcjy1000/article/details/114705842