1. 经过测试#define与inline的速度几乎没有区别。
2. inline函数更为安全,有效避免了#define二义性问题。inline是真正的函数,而#define只是在字符串意义上的宏替换。
3. 在开发工程的时候inline可以封装在类中,而#define不行,#define容易产生重复定义的问题。
4. inline函数对编译器来说只是建议,因此编译器在编译的时候不一定按照inline函数进行展开。这就需要注意两个问题:
1)inline函数的函数体不能复杂,否则编译器将按照一般函数处理,带返回值的inline函数推荐这样的形式,inline int f(int i) {return i*i}
2)配置编译器时需要开启对inline函数的支持。VS是在Project->Properties->C/C++->Optimization->Inline Function Expansion 中设置。