内联函数VS宏定义
相同点:
(1)二者都是通过将函数调用替换成完整的函数体,相比函数调用的时间、空间开销而言,二者提高了效率。
不同点:
(1)宏定义不是函数,而内联函数时函数,因此内联函数可以调试,宏定义不能。
(2)宏定义的代码展开阶段是预处理阶段,而内联函数在编译阶段,因此内联
函数有类型安全检查,宏定义没有
(3)内联函数作为类的成员函数时,可以访问类的所有成员(公有、保护、私有),宏定义不能。
此外需要注意:
(1)inline关键字要放在函数定义前面才起作用,只放在声明前是没有作用的。
(2)在使用内联函数时,要避免“代码膨胀”,即程序不宜过长。
(3)在类中,如果在函数声明的同时给出定义,编译器自动将函数识别为内联函数
(4)现在的编译器大多都经过优化,能够自动判断一个函数是否否和作为内联函数。
版权声明:本文为lyl194458原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。