这篇文章记述了关于 C++ inline 关键字的知识点。
阿里:inline 实现原理
内联函数(inline function与通常的函数不一样,它不是在调用时发生控制转移,而是在编译阶段将函数体嵌入到每个调用该函数的语句块中。 内联函数(inline function) 与编译器的工做息息相关 。编译器会将程序中出现内联函数的 调用表达式用内联函数的函数体来替换。
内联函数的优势:
内联函数是将程序执行转移到被调用函数所存放的内存地址,将函数执行完后,在返回到执行此函数前的地方。这种转移操做须要保护现场、包括进栈等操做,在被调用函数代码执行完后,再恢复现场。可是保护现场和恢复现场须要较大的资源开销。对于一些较小的调用函数来讲,如果频繁调用,函数调用过程甚至可能比函数执行过程须要的系统资源更多。因此引入内联函数,可让程序执行效率更高。
内联函数的缺点:
若是调用内联函数的地方过多,也可能形成代码膨胀。由于编译器会把内联函数的函数体嵌入到每个调用了它的地方,重复地嵌入。
如下是几种含有内联函数的状况: