宏定义的缺点
1、容易出错,预处理器在拷贝宏代码时,常常会产生意想不到的边际效用,容易产生二义性。(在调用处进行展开,会出现运算符优先级的问题)
2、不可以调试。然而内联函数在debug版本里面,它根本不是真正的内敛,在release中才会成为真正的内敛。
3、在c++中,宏代码无法操作类的私有数据成员。原因是,预处理器不能进行类型安全检查和自动类型转换,预处理无法处理this指针的问题。
内联函数和普通函数
C++中支持调用内联函数,目的是提高函数的执行效率,用关键字inline放在函数定义,内联函数通常就是将它在程序中内联的展开。函数的调用是需要付出一定的时空开销,因为系统在调用函数是,要保留现场,然后转入被调用的函数执行,调用完后,再返回主调函数,在恢复现场。内联函数就是将简单的函数内嵌到程序代码中,避免以上的开销,这是用空间换来的,要是调用N次内联函数,那就有N的拷贝动作。