我在程序的每个方法中使用内联(算法的实现),它是否会产生问题?
答案 0 :(得分:4)
取决于您的代码是什么样的。
但不了解你的代码意味着什么? 肯定会会导致你出现问题。
为什么不尝试了解inline
实际做什么,而不仅仅是它是否会导致任何问题?
C ++中inline
关键字的主要作用是使编译器抑制ODR(一个定义规则)。因此,必须在一个翻译单元中定义非inline
函数。
必须在每个使用它的翻译中定义inline
函数。
因此,根据您定义函数的方式和位置,inline
可能是正确。我建议你在使用正确的地方使用它。
答案 1 :(得分:-1)
假设编译器不够智能而无法忽略它,它可能会使编译输出更大并且运行速度更慢。一般来说,如果你有一个特定的目的,你应该只使用'register'或'inline'这样的优化关键字 - 你知道编译器不知道的有用的东西。
在现代CPU上,内联通常是一种悲观而不是优化。这是因为函数的每个副本都必须从内存中获取,对其指令进行解码,并在各种缓存中占用自己的空间 - 特别是分支预测缓存。