c - 当函数在不同文件中实现时 ((always_inline)) 不起作用

标签 c gcc inline-functions

我有一个文件funcs.h,其中有函数声明:

inline void some_func( void ) __attribute__((always_inline));

然后我有一个文件 funcs.c,其中包含函数的实现:

inline void some_func( void ) { … }

然后在我的主文件 main.c 中,我 #include funcs.h 并尝试使用 some_func() 代码中的某处。但是,当我编译程序并查看二进制文件时,该函数似乎被编译为常规单独函数,并且像任何其他常规函数一样调用,而不是作为内联嵌入。

为什么会发生这种情况,有没有办法强制实际内联到此? (当然,除了仅使用 #define 宏而不是函数的选项。)

最佳答案

将实现放在标题中。如果它们在您打算进行内联的翻译单元中不可用,那么您就不走运了。链接器(嗯,传统链接器)无法为您做任何事情。

关于c - 当函数在不同文件中实现时 ((always_inline)) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289599/

相关文章:

c - 如何控制ELF文件中节到段的映射?

c++ - 为什么 CMake 从 INCLUDE_DIRECTORIES() 调用中删除一些包含目录?

assembly - 为什么静态变量的地址是相对于指令指针的?

c - C 允许函数调用作为参数吗?

c - 使用 "array name"和 "address-of array name"打印数组的地址

c - "iteration ... invokes undefined behavior [-Waggressive-loop-optimizations]"警告的不明显原因

c++ - vfprintf 无法正常工作

function - 何时在 Kotlin 中使用内联函数?

android - 代码覆盖内联函数

c++ - 由于源文件中存在未执行的代码而在运行应用程序时崩溃 - C++