[英]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.