繁体   English   中英

使用aarch64 linux android clang的ARMv8体系结构的内联函数交叉编译问题

[英]Inline function cross compilation issues for ARMv8 architecture using aarch64 linux android clang

我对在C代码(C99)中使用内联关键字有疑问。 我知道C99内联语义不同于C ++或gnuC内联规则,我已阅读

http://www.greenend.org.uk/rjk/tech/inline.html

内联外部

但是,我只是无法正常工作。

我在file1.c中具有如下函数定义

inline myfunc(arguments)
{

}

并且此函数是从file2.c中的另一个函数调用的
在那个file2.c中,我尝试使用

extern inline myfunc(arguments);

在从其他函数调用之前,此函数

我仍然不断收到错误-myfunc的隐式声明

或删除未定义的内联错误

由于我的代码结构,无法在头文件中包含myfunc函数定义,也不能将其作为静态内联,因为必须从不同的编译单元调用它。

我弄错了什么? 如何解决。

经过大量阅读,反复试验后,我发现了上述问题的答案,这是我一直在寻找的答案-使用C99规则内联存在C源文件中的C函数定义,而无需将其放在头文件中。 我将属性always_inline关键字添加到函数定义和声明中,如下所示,然后重新编译,它内联了对该函数的调用。 在文件file1.c中

__attribute__((always_inline)) void myfunc(arguments)
{
//... function definition
}

在具有声明的file1.h中,我将其更改为如下

__attribute__((always_inline)) void myfunc(arguments);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM