【发布时间】:2010-12-28 06:53:14
【问题描述】:
我知道内联是对编译器的提示或请求,它用于避免函数调用开销。
那么在什么基础上可以确定一个函数是否是内联的候选者呢? 在哪种情况下应该避免内联?
【问题讨论】:
-
inline对于 C++ 新手来说就像CFLAGS对于 Gentoo 新手一样:不,用-O3 -funroll-loops -finline-functions编译不会让你的旧 Pentium 飞起来;) -
不使用内联的原因是某些调试器不允许您设置断点或进入内联函数。
-
你不应该决定一个函数是否应该被内联。让编译器来做;它比你更擅长(并且可以根据每次调用的环境有选择地内联函数)。
-
@DavidThornley 有时,即使设置了 O3 标志,如果定义在 cpp 文件中,编译器也不会内联函数。所以,我遵循的经验法则是内联一个衬里以及那些没有任何循环的函数。