我已经结束在头文件中放入许多小的内联函数,我在许多编译单元中包含了这个函数, 代码由编译器正确内联,程序就像魅力一样。
但是现在头文件非常不寻常(作为头文件), 为了让它更具可读性我想做这样的事情:
#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 ..
}
然后,当我想要这些功能时,我只需要包含头文件。
我的问题是:有一种更好的方法来实现这一点,而无需填充太多代码的头文件? 或者我可以做到这一点,并期望其他开发人员没有问题地理解这些代码?
答案 0 :(得分:1)
不,你不能。但是,您可以使用GCC的链接时间优化功能(然后可能会内联一些调用,即使该函数未声明inline
且在每个编译单元的标头中都不可用),例如,使用gcc -flto
编译和链接(这需要最近的GCC编译器,例如至少4.6,并减慢构建时间。)
答案 1 :(得分:1)
我个人不喜欢的做法是将内联函数提取到扩展名为.inl的单独文件中。这只是惯例,您可以将文件命名为任何您喜欢的名称。我有一个折叠代码的IDE,所以我可以隐藏我不想看的东西而不是单独的文件。