【发布时间】:2012-07-11 09:53:39
【问题描述】:
在 C++ 中,可以使用 inline 关键字将函数定义为内联函数。就像程序员要求编译器在每个调用函数的地方插入完整的函数体一样。
但据我所知,编译器没有义务尊重这一要求。那么有没有办法保证函数是内联的呢?
【问题讨论】:
-
我不认为你可以保证。
inline关键字只是对编译器的建议。 -
相信优化器会完成它的工作。
-
@Mike 您是否真的希望在 内联 方面比优化器更聪明?这不是现代优化师的核心能力之一吗?好的,当涉及到诸如自动矢量化和某些类型的分支预测之类的事情时,现代优化器仍然在苦苦挣扎。但是对于内联?
-
无论如何,我同意通常没有必要这样做。我当然不会同意任何类型的说法,即它因此不值得这样做。这样的事情值得做几次,如果只是为了说服自己不值得再做一次。所以我真的不同意你之前的一些 cmets 的“盲目相信编译器”的语气。有趣的是,你的经历和 Mysticial 的直接矛盾。可能有人使用了错误的标志,否则可能你处理的代码类型非常不同,而且你的优化比他的更好。
标签: c++ inline-functions