编译器无法识别__STATIC_INLINE

时间:2017-05-23 18:36:34

标签: c gcc

我有一个使用arm-none-eabi-gcc编译器在ARM体系结构上运行的C项目,现在我正在尝试使用gnu99编译器在Windows上本地编译它因为我需要进行单元测试而且很难在实际的硬件上做。

但是编译器没有识别静态内联命令,尽管我在makefile中包含了内联标志,如下所示:CFLAGS += -fgnu89-inline

以下是我得到的错误:

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我猜测在某些头文件中有一行代码如下:

#define __STATIC_INLINE static inline

这种丑陋黑客攻击的动机是保持C99之前的兼容性。 根据您正在编译的平台,可能会删除此#define。交叉编译器与PC平台。

随着代码的发展,我会努力去除这种类型的废话。