我有一个在ARM架构上使用arm-none-eabi-gcc编译器运行的C项目,现在我尝试使用gnu 99编译器在Windows上本地编译它,因为我需要进行单元测试,而在实际硬件上很难做到这一点。
但是,编译器无法识别静态内联命令,尽管我在makefile中包含了内联标志,如下所示:CFLAGS += -fgnu89-inline
下面是我得到的错误:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void' __STATIC_INLINE void
有没有人知道如何让编译器识别内联命令?
3条答案
按热度按时间smtd7mpg1#
名称
__STATIC_INLINE
不是标准C的一部分。您需要提供它的宏定义,或者您应该将__STATIC_INLINE
取代为static inline
。rggaifut2#
我猜在某个头文件中有一行代码看起来像这样:
这个丑陋的黑客的动机是为了保持C99之前的兼容性。这个#define可能会根据你编译的平台而被删除。交叉编译器与PC平台。
随着代码的发展,我会努力删除这种类型的废话。
wgeznvg73#
检查CMSIS,他们有这些声明在那里。
define __STATIC_INLINE静态内嵌