我正在将实时内核TNeoKernel移植到 Cortex-M 架构,所以我已经安装了 Keil 并正在尝试构建内核。但是,我遇到了意想不到的问题:编译器似乎无法处理inline
函数。这是简单的代码:
static inline int test(void)
{
return 0;
}
编译器的输出如下:
src\appl\main.c(17): warning: #260-D: explicit type is missing ("int" assumed)
static inline int test(void)
src\appl\main.c(17): error: #65: expected a ";"
static inline int test(void)
如果我删除inline
关键字,它会编译并工作。
在 ARM Compiler 的文档中,我找不到任何关于inline
函数的信息。所以,只是为了确保:inline
ARM 编译器真的不支持关键字吗?太不可思议了,所以我决定问问。
我static inline
在内核的平台无关代码中有很多函数,那么,让它支持 ARM 编译器的最好方法是什么?在我的脑海中,我只有两个想法:
- 创建与体系结构相关的宏,例如
TN_INLINE
,对于 ARM 编译器,它应该扩展为空; - 将非常小的 1 行函数转换为宏。