前言
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
- 增加完就可以正常编译通过了
总结
- 使用RT-Thread Studio,无需修改,可以正常的编译,因为使用gcc编译环境
- Keil MDK,使用ARMCC编译