内联函数与宏
内联函数:是一种特别的用于消除调用函数时所造成的固有的时间消耗方法。对于一些函数体代码不是很大,但又频繁调用的函数来讲,附加的时间开销大的不容忽视。为了解决这一矛盾,c++提供了“内联函数机制”。编译器会在编译期将指定的内联函数体插入并取代每一处调用该函数的地方,从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。另外还需要特别注意的是对递归函数的内联扩展可能引起部分编译器的无穷编译。除此之外,还要注意内联函数的定义必须在该函数的调用之前,因为编译器在对函数调用进行语句替换时必须实现知道该语句的替换代码。
宏: C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符在预处理阶段均以指定的字符串来代替。
(编辑->预处理->编译->连接->运行)
内联函数与宏的比较:
1. 宏调用并不执行类型检查,甚至连正常参数也不检查,但是内联函数调用却要检查,满足函数的性质,比如有返回值、参数列表等。
2.宏使用的是文本替换,可能导致无法预料的后果,因为需要重新计算参数和操作顺序。
3.许多结构体使用宏或者使用不同的语法来表达很难理解。内联函数使用与普通函数相同的语言,可以随意的内联和不内联。