我对在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的隐式声明
如果我删除extern inline ,则或未定义的引用错误
由于我的代码结构,不能在头文件中使用myfunc函数定义,也不能将其作为静态内联,因为它必须从不同的编译单元调用。
我错了什么?如何解决它。
答案 0 :(得分:0)
经过大量的阅读,试验和错误我已经找到了上述问题的答案,我正在寻找 - 使用C99规则在C源文件中内联C函数定义,而不是将其放入头文件。 我将属性always_inline关键字添加到函数定义和声明中,如下所示并重新编译,它内联对该函数的调用。 在文件file1.c
中__attribute__((always_inline)) void myfunc(arguments)
{
//... function definition
}
并在file1.h中有声明,我将其更改为
__attribute__((always_inline)) void myfunc(arguments);