为什么没有标准方法强制C ++内联?
|
根据Wikipedia C ++文章
C ++旨在为程序员提供选择,即使这使程序员可能会选择错误。
如果以这种方式设计,为什么即使我可能是错的,也没有标准的方法来强制编译器内联某些东西?
或者我可以问为什么
inline
只是一个提示?
我想我在这里别无选择。
在OOP世界中,我们在对象上调用方法,应避免直接访问成员。如果我们不能强制访问器内联,那么我们将无法编写高性能但仍可维护的应用程序。
(我知道许多编译器都实现了强制内联的方式,但这很丑陋。使用宏在类上进行内联访问器也很丑陋。)
编译器是否总是比程序员做得更好?
没有找到相关结果
已邀请:
5 个回复
博沮富教全
联海
)可能会被重载,调用约定和异常处理步骤的详细程度通常不高对程序员来说很明显。 机会是,如果编译器没有内联足够小的内容,如果内联了它,您就可以期望获得有用的性能改进,那么编译器意识到某些实现问题,您不是那样做的。实际上使情况变得更糟。在那些灰色的情况下,编译器可能会选择哪种方式运行,而您刚刚超过某个阈值,那么性能差异无论如何都不会很明显。 此外,有些程序员(包括我自己)可能会懒惰并故意滥用ѭ0作为将实现放在头文件中的便捷方法,从而绕过ODR,即使他们知道那些函数很大并且如果编译器会造成灾难性的后果(被要求)实际上内联它们。但这并不排除强制内联关键字/表示法...只是说明了为什么很难更改当前“ 0”关键字周围的期望。
屡倒雷图
莽缓逢
。对于许多早期的C项目,这已经足够了。
是足够不同的-提示,更好的语义-可以在宏之外添加。但是,一旦两者兼而有之,则之间的第三种选择就几乎没有余地了,这三种选择具有更好的语义,但不是可选的。
断跑胺弄萎