内联函数 PK 普通函数
代码编译后的可执行程序实际是一组机器语言指令,在运行程序时,操作系统将这些指令载入内存(每条指令均占内存空间),计算机随后逐条执行这批指令。当遇到到函数时,程序先存储该指令的内存地址,并将函数参数复制到堆栈,然后跳到函数起点所在的内存单元,执行函数代码,最后回到刚保存的内存地址(这与阅读文章时停下来看注释,并在阅读完注释后返回到以前阅读的地方类似)。
普通函数在调用时需要来回跳跃并记录跳跃位置,这需要额外的开销。内联函数直接以函数代码替代了函数调用语句, 从而避免了函数调用的开销,执行效率更高,但代价是占用更多内存。
内联函数 PK 宏
内联函数是一个真正的函数,遵循函数的类型和作用域规则,编译器在调用一个内联函数时,会首先检查它的参数的类型,保证调用正确,这样就消除了它的隐患和局限性;内联函数可以作为某个类的成员函数,这样就可以在其中使用所在类的保护成员及私有成员;宏是不加任何验证的简单代码替换,除非万不得已,不要使用。注意
内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间占比很小;如果代码执行时间很短,则内联函数就可以节省函数调用的时间。
但应注意:
含有递归调用的函数不能设置为inline;使用了复杂流程控制语句:循环语句和switch语句,不能设置为inline;由于inline增加体积的特性,所以建议inline函数内的代码应很短小。最好不超过5行;内联函数应该在头文件中定义,关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。小例子
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容