首先,我不是在寻找一种方法来强制编译器内联每个函数的实现。
为了减少错误答案的水平,请确保您了解inline
关键字的实际含义。这是很好的描述,inline vs static vs extern。
所以我的问题是,为什么不标记每个函数定义inline
?即理想情况下,唯一的编译单元是main.cpp
. 或者对于无法在头文件中定义的函数(pimpl idiom 等)可能还有更多。
这个奇怪请求背后的理论是它会给优化器提供最大的信息来处理。它当然可以内联函数实现,但它也可以进行“跨模块”优化,因为只有一个模块。还有其他优点吗?
有没有人用真实的应用程序试过这个?性能提高了吗?减少?!?
标记所有函数定义的缺点是什么inline
?
- 编译可能会更慢并且会消耗更多的内存。
- 迭代构建被破坏,每次更改后都需要重新构建整个应用程序。
- 链接时间可能是天文数字
所有这些缺点只会影响开发人员。运行时的缺点是什么?