如果一个函数是内部函数,在通常会采用内联方式插入该函数的代码,从而避免函数调用的开销并可发出该函数的高效率计算机指令。 内部函数通常比等效的内联程序集速度更快,因为优化程序拥有众多内部函数行为方式的内置知识,因此可以优化使用内联程序集无法优化的内容。 此外,优化程序还可以采用不同的方式扩展内部函数、对齐缓冲区或根据上下文和调用自变量进行其他方面的调整。
内联函数能提高函数的执行效率,不需要像参数和返回地址那样在堆栈上或从堆栈中推送和弹出内容,尽管他会使二进制文件较大一些。
如果想把一个函数定义为内联函数,就需要在函数名前面放置关键字inline。
关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用。
inline void test(int x, int y); // inline 只跟test函数的声明放在一起,这是错误的
void test(int x, int y)
{
...
}
void test(int x, int y);
inline void test(int x, int y) //inline跟函数定义体放在一起,这是正确的食用方法
{
...
}
定义在类声明之中的成员函数将自动地成为内联函数。
class A
{
public:
void B(int x, int y) { ... } //这里它就成为了内联函数
}
内联那些包含循环或 switch 语句的函数常常是得不偿失 (除非在大多数情况下, 这些循环或 switch 语句从不被执行).
参考https://blog.csdn.net/u011327981/article/details/50601800/