我对在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);