将函数定义直接放在头文件中,以便编译器可以内联?

时间:2010-08-02 15:56:22

标签: c++ compiler-construction header inline

我倾向于将较小函数的主体放入头文件foo.h中,而不是放入单独的实现文件foo.cc中,因为编译器总是可以完全看到这些函数并决定内联它们。

示例:

// File "foo.h":
struct Foo { 
  // ...   
  int GetCount() const { return count_; }
};

现在,使用Foo的任何代码都会看到整个GetCount实现,并且可以决定内联它。

这是好习惯吗?如果是这样,你是否也将更大的函数定义放入头文件中?

2 个答案:

答案 0 :(得分:3)

现代编译器有link time optimization,因此不再需要在标题中提供代码以使函数内联。因此,我认为将声明标记为内联是更好的做法,但将定义放在cpp中。

答案 1 :(得分:0)

这是好习惯,是的。实际上,我认为,对于这种情况,只要您了解行为,您就可以随心所欲地内联您的功能。请注意,编译器将做出关于内联的最终决定。