c++ - C++中的 “inline”关键字

标签 c++ function inline inline-assembly machine-code

因此,关键字“inline”将导致调用被替换为正确的函数体吗?
所以我猜这意味着我们完全跳过了通话?就像我们查看.asm文件一样,找不到 call 指令吗?

最佳答案

关键字inline具有误导性,对于实际的内联而言,它既不必要也不充分。它所做的一切:告诉链接器允许该函数的多个定义,这意味着您可以将该函数放在 header 中。完成后,编译器将有更好的内联机会,因为在更多地方可以看到函数体。在现代系统中,如果它们使用整个代码优化就不再重要。
编译器有机会内联后,就必须确定它是否对您要求它进行的任何优化(例如,针对速度进行优化)是否有益。
如果编译器决定内联,那么您所说的.asm文件是正确的-无需调用该函数。

关于c++ - C++中的 “inline”关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62924402/

相关文章:

c++ - 在 boost-build (b2) 项目中构建基于 makefile 的依赖项

c++ - 线程安全计数器c++11

c++ - 编译器是否更有可能使用指定的 inline 关键字在类声明中内联函数?

Android:如何让功能等待另一个?

javascript - 使用内联 JS onSubmit 警报并返回 False

CSS 样式冲突

c++ - 确定 TMenuItem 中文本的高度,以决定通过 TMenuItem.OnMeasureItem 更改 MenuItem 的高度

c++ - 关键字 using 的功能是什么?

c++ - 比较器函数 vector 的默认参数

javascript - react 函数和事件