Dmi*_*ank 0 c arm inline-functions keil
我正在将实时内核TNeoKernel移植到Cortex-M架构,所以我安装了Keil并且正在尝试构建内核.但是,我遇到了意想不到的问题:编译器似乎无法处理inline函数.这是简单的代码:
static inline int test(void)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器的输出如下:
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)
Run Code Online (Sandbox Code Playgroud)
如果我删除inline关键字,它会编译并运行.
在ARM编译器的文档中,我找不到任何关于inline函数的信息.因此,只是为了确保:inlineARM编译器是否真的不支持该关键字?这太令人难以置信所以我决定问.
我static inline在内核的独立于平台的代码中有很多函数,那么,它支持ARM编译器的最佳方法是什么?在我的头脑中,我只有两个想法:
TN_INLINE,对于ARM编译器,它应该扩展为空;inline关键字已在c99中引入,但默认情况下, Keil ARM C编译器在c89/c90模式下编译.
Keil 文档明确说明inline在c90中没有:
内联关键字在C90中不可用.
Keil ARM C编译器也支持c99.在c90模式下,使用--c99编译器选项切换到c99模式或尝试使用__inline扩展名关键字: