C++ 在方法定义中使用内联关键字是否会导致错误?
我在我的程序(算法的实现)中的每个方法中都使用了内联,它会产生问题吗?它可能会使编译后的输出更大,运行更慢,假设编译器不够聪明,不会忽略它。通常,如果您有特定的目的,您应该只使用优化关键字,如“register”或“inline”——在这种情况下,您知道一些编译器不知道的有用内容C++ 在方法定义中使用内联关键字是否会导致错误?,c++,c,C++,C,我在我的程序(算法的实现)中的每个方法中都使用了内联,它会产生问题吗?它可能会使编译后的输出更大,运行更慢,假设编译器不够聪明,不会忽略它。通常,如果您有特定的目的,您应该只使用优化关键字,如“register”或“inline”——在这种情况下,您知道一些编译器不知道的有用内容 在现代CPU上,内联通常是一种悲观主义,而不是优化。这是因为函数的每个副本都必须从内存中提取,对其指令进行解码,并在各种缓存中使用自己的空间,特别是分支预测缓存。取决于代码的外观 但是不理解代码的含义?这肯定会给你带来
在现代CPU上,内联通常是一种悲观主义,而不是优化。这是因为函数的每个副本都必须从内存中提取,对其指令进行解码,并在各种缓存中使用自己的空间,特别是分支预测缓存。取决于代码的外观 但是不理解代码的含义?这肯定会给你带来麻烦 为什么不试着去了解
inline
实际上做了什么,而不仅仅是它是否会引起任何问题
<> C++中的<>代码>内联关键字的主要作用是使编译器抑制ODR(一个定义规则)。因此,非内联函数必须在一个翻译单元中定义
内联
函数必须在使用它的每个翻译中定义
因此,根据函数的定义方式和位置,
inline
可能正确,也可能不正确。我建议您在使用正确的地方使用它。-1,内联函数使分支预测和缓存更加高效,因为函数位于调用它的位置,而不是代码部分的其他位置。跳转位置是导致缓存丢失的原因。@pezcode:嗯?跳转如何产生缓存未命中?跳跃是100%可预测的。如果该函数最近从其他地方调用,那么它在缓存中将是热的。