我有一个关于在 C 代码 (C99) 中使用 inline 关键字的问题。我知道 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 函数定义,也不能将其作为静态内联,因为它必须从不同的编译单元调用。
什么是我弄错了?如何修复它。
经过大量阅读,反复试验,我以我正在寻找的方式找到了上述问题的答案 - 使用 C99 规则内联存在于 C 源文件中的 C 函数定义,而不将其放入头文件中。我将属性 always_inline 关键字添加到如下的函数定义和声明中并重新编译,它内联了对该函数的调用。在文件 file1.c 中
__attribute__((always_inline)) void myfunc(arguments)
{
//... function definition
}
在有声明的 file1.h 中,我将其更改为如下所示
__attribute__((always_inline)) void myfunc(arguments);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句