gcc 编译器无法识别__STATIC_INLINE

mdfafbf1  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(390)

我有一个在ARM架构上使用arm-none-eabi-gcc编译器运行的C项目,现在我尝试使用gnu 99编译器在Windows上本地编译它,因为我需要进行单元测试,而在实际硬件上很难做到这一点。
但是,编译器无法识别静态内联命令,尽管我在makefile中包含了内联标志,如下所示:CFLAGS += -fgnu89-inline
下面是我得到的错误:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void' __STATIC_INLINE void

有没有人知道如何让编译器识别内联命令?

smtd7mpg

smtd7mpg1#

名称__STATIC_INLINE不是标准C的一部分。您需要提供它的宏定义,或者您应该将__STATIC_INLINE取代为static inline

rggaifut

rggaifut2#

我猜在某个头文件中有一行代码看起来像这样:

#define __STATIC_INLINE static inline

这个丑陋的黑客的动机是为了保持C99之前的兼容性。这个#define可能会根据你编译的平台而被删除。交叉编译器与PC平台。
随着代码的发展,我会努力删除这种类型的废话。

wgeznvg7

wgeznvg73#

检查CMSIS,他们有这些声明在那里。

define __STATIC_INLINE静态内嵌

相关问题