C++ 中的“内联”关键字

ヅヅヅ*_*ヅヅヅ 1 c++ inline function machine-code inline-assembly

那么关键字“inline”会导致调用被函数体替换吗?所以我猜这意味着我们完全跳过电话?就像如果我们查看 .asm 文件,我们不会找到调用指令?

Eug*_*ene 5

关键字inline具有误导性 - 实际内联的发生既不必要也不充分。它所做的一切:它告诉链接器允许函数的多个定义,这意味着您可以将函数放在标题中。一旦你这样做了,编译器就有更好的机会进行内联,因为函数体在更多的地方变得可见。在现代系统中,是否使用全代码优化不再重要。

一旦编译器有机会内联,它就必须决定它是否有利于您要求它执行的任何优化(例如,优化速度)。

如果编译器决定内联,那么你所说的 .asm 文件是正确的 - 没有调用函数。