C-使用AARCH64 Linux Android Clang的ARMV8体系结构的内联函数交叉编译问题



我对在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函数定义,也不能将其作为静态内联,因为它必须从不同的编译单元中调用。

我出了什么问题?如何修复它。

在阅读了很多有关此问题,反复试验和错误之后,我以我正在寻找的方式找到了我上面的问题 - 内联c函数定义,使用C源文件,使用C99规则,而无需将其放入标头文件中。我将属性始终_inline关键字添加到函数定义和声明如下并重新编译的声明中,它嵌入了对该函数的调用。在文件file1.c

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

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

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

最新更新