【发布时间】:2015-01-10 01:11:21
【问题描述】:
我正在将实时内核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 函数的信息。所以,只是为了确保:ARM 编译器真的不支持 inline 关键字吗?太不可思议了,所以我决定问问。
我在内核的平台无关代码中有很多static inline 函数,那么,让它支持ARM 编译器的最好方法是什么?在我的脑海中,我只有两个想法:
- 创建与架构相关的宏,如
TN_INLINE,对于 ARM 编译器,它应该扩展为空; - 将非常小的单行函数转换为宏。
【问题讨论】:
标签: c arm keil inline-functions