刚刚不停的翻找网页和自己试用来总结一下什么是内联函数,我写了内联函数,用反汇编来看和普通函数没有区别
内联函数的本质:就是函数
调用函数中系统做了什么:开辟栈空间、保护现场、传递参数、控制程序转移等等……这些都要花费时间
内联函数的由来:有一些函数,代码少,调用频繁,花费时间多了,效率低了,写成内联就会调用速度快了
内联函数的标识符:inline(实现的标识符,不是声明的,代码示例中理解)
内联函数的忌讳:不写循环、开关、递归这些语句
内联函数的有效性:1.标识符和函数体在一起有效;2.代码少有效(多少才算有效没有搜到),代码多了系统会当作内联失败,当作普通函数调用(不会报错)
内联BUG:当你内联函数中有静态变量,而内联失败,可就不止一个静态变量了
代码示例:
普通的内联函数:
inline void aa(int i){
i++:
}
理解是实现的标识符不是声明用的(标识符没有和函数体在一起,无效)
inline void aa(int i);
main(……)
void aa(int i)
{ i++;}
我们经常用内联函数,只是你可能不知道而已:类内部的函数,避开上面的忌讳,成员函数就是内联函数,不论有还是没有标识符
对于我学到的是:不去管成员函数是不是内联函数,写的一些小的函数且经常要用的函数,没有放在类里,就给加个标识符
(PanPen120原创 如有建议 请留言)