C++ 的函数中,什么时候要写inline

来源:互联网 发布:最好吃的方便面 知乎 编辑:程序博客网 时间:2024/05/17 01:02
这涉及一个效率问题。记住,调用函数的开销是很大的,所谓的空间开销是指调用函数前,先要将原来的函数保存在寄存器(占用寄存器空间)里面,并在调用结束后恢复。调用函数时,还要复制实参(占用内存空间)。如果被调用函数一旦调用频繁,就会花费很多空间。如果你有一段“短小而频繁调用的函数”,内联是个不错的选择。 “如果含有复杂的分支或循环结构,我使用inline会有什么后果?” 事实上,所谓内联,是编译器将内联函数在函数调用点上展开函数代码。例如 inline int small(int a,int b) { return a < b ? a : b ; } cout << small ( a, b ) << endl ;等同于 cout << (a < b ? a : b) << endl; 编译器会将函数调用语句转换为函数代码,再进行编译。inline只是你给编译器提一个建议,希望它将函数内联,至于它会不会执行就不一定了。 基本上复杂的函数它是不会同意的,就算同意了,也只会使你的编译变得更将浪费时间,而执行速度得不到什么提升。还有,一些编译器是不会通过含有递归的内联函数的。