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

问题描述 投票:0回答:2

我倾向于将较小函数的主体直接放入头文件

foo.h
中,而不是放入单独的实现文件
foo.cc
中,因为这样编译器总是可以完整地看到这些函数并决定内联它们。

示例:

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

现在,任何使用

Foo
的代码都可以看到整个
GetCount
实现,并可以决定内联它。

这是好的做法吗?如果是这样,您是否也将稍大的函数定义放入头文件中?

c++ inline header-files
2个回答
3
投票

现代编译器具有链接时间优化,因此不再需要在标头中提供可用的代码来内联函数。因此我想说,最好的做法是将声明标记为内联,但将定义放在 cpp 中。


0
投票

是的,这是一个很好的做法。我认为,实际上,对于这种情况,只要您了解这些行为,那么您就可以随意内联您的函数。请注意,编译器将做出有关内联的最终决定。

© www.soinside.com 2019 - 2024. All rights reserved.