是不是内联过早优化?

fou*_*nes 4 c++ compiler-construction optimization inline

可能重复:
C++中的内联函数

现代编译器在决定应该内联什么和不应该什么时,比程序员更好.就像register,不应该内联函数只是编译器的工作,并被认为是过早的优化?

Ale*_*ler 7

inline 有一些双重意义,有些人不知道 - 它允许在多个翻译单元中定义一个函数(即如果你在一个标题中定义一个未绑定的函数并在各种翻译单元中包含它,你就不得不声明它内联或链接器会抱怨双重定义的符号).

第二个含义是向编译器提示该函数可以通过在调用者站点内联其机器代码而获益.你是对的,现代编译器/优化器应该能够自己解决这个问题.

我的建议是inline仅在需要时使用(第一种情况)并且永远不要将优化提示传递给编译器.这样,您的源代码就解决了这种疯狂的双重含义.