4

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

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

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

inline void some_func( void ) { … }

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

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

4

1 回答 1

4

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

于 2014-06-18T15:34:27.460 回答