C++ inline函数与编译器设置

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 中设置。