C++入门到放弃(05)——内联函数: inline

发布时间 2023-08-01 20:51:18作者: 无夜千幕雪

1.基本用法

要使用内联函数时,必须遵循如下规则:

在函数声明前加上关键字inline,或着在函数定义前加上关键字inline,二者取其一即可。

inline int max(int a, int b);    // 取其一即可

inline int max(int a, int b){     // 取其一即可
    return a > b ? a : b;
}

另外一种做法是,直接省略原型,将函数实现写在函数声明的位置(即将函数头和函数代码,放在提供原型的地方),也可以实现inline的效果。

//int max(int a, int b);    //省略

int max(int a, int b){
    return a > b ? a : b;
}

两种方法,都可以实现内联函数inline。

2.作用

内联函数的基本作用是,以空间换时间,通过牺牲内存大小,换取更高的运行速率。

调用函数时,程序首先存储该指令的内存地址,然后将当前函数的参数复制到堆栈,之后再跳转至标记函数起点位置执行代码,结束后再跳转回原来的位置。这一系列操作,意味着每次调用函数都需要一定的资源开销。

内联函数提供另一种解决方案,有点类似于宏定义,通过直接将内涵函数的代码,直接嵌入被调用的位置,来避免调用函数而产生的额外开销。

 

3.注意事项

内联函数,无法实现递归调用。

宏再某种程度上,实现和内联函数相同的功能时,可以考虑改成内联函数。因为宏可能因为格式问题导致运行顺序出现异常,而内联函数不存在这种问题。