标题充满了内联函数,我可以将代码移到头文件之外并仍然内联所有内容吗?

时间:2012-03-25 08:21:36

标签: c header inline code-readability

我已经结束在头文件中放入许多小的内联函数,我在许多编译单元中包含了这个函数, 代码由编译器正确内联,程序就像魅力一样。

但是现在头文件非常不寻常(作为头文件), 为了让它更具可读性我想做这样的事情:

#ifndef MY_HEADER_H
#define MU_HEADER_H

static inline 
void my_fnct (my_param a);

#include "my_header.inline.c"

#endif

,文件my_header.inline.c将如下:

static inline 
void my_fnct (my_param a)
{
    // .. my code ..
}

然后,当我想要这些功能时,我只需要包含头文件。

我的问题是:有一种更好的方法来实现这一点,而无需填充太多代码的头文件? 或者我可以做到这一点,并期望其他开发人员没有问题地理解这些代码?

2 个答案:

答案 0 :(得分:1)

不,你不能。但是,您可以使用GCC的链接时间优化功能(然后可能会内联一些调用,即使该函数未声明inline且在每个编译单元的标头中都不可用),例如,使用gcc -flto编译和链接(这需要最近的GCC编译器,例如至少4.6,并减慢构建时间。)

答案 1 :(得分:1)

我个人不喜欢的做法是将内联函数提取到扩展名为.inl的单独文件中。这只是惯例,您可以将文件命名为任何您喜欢的名称。我有一个折叠代码的IDE,所以我可以隐藏我不想看的东西而不是单独的文件。