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

标签 c++ compiler-construction header inline

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

示例:

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

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

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

最佳答案

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

关于c++ - 将函数定义直接放在头文件中以便编译器可以内联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3389443/

相关文章:

c++ - 有条件地在类中创建成员

c++ - namespace 别名是否会更改链接?

c - 将字符串插值转换为 C

c# - 编译嵌套的相互递归函数

listview - 执行notifyDataSetChanged时ListView出现ClassCastException

caching - 在 Acrobat Reader 10.0 (HTTP 1.0/HTTP 1.1) 中使用 PDF 流时如何防止缓存

c++ - 包含如何影响 C++ 中的执行时间?

c++ - 导入库文件是否包含可以在更新时破坏我的应用程序的信息?

c++ - 如何删除输出末尾的逗号?

c - 在 Linux 上是否可以在没有链接 libc 的情况下将 C 转换为 asm?