宏
宏是在预处理的地方把代码展开, 宏是由预处理器对宏进行替代.
不需要额外的空间和时间方面的开销, 所以调用一个宏比调用一个函数更有效率. 给宏的参数都加上括号. Example: #define square(x) (x*x)
内联函数
内联函数是代码被插入到调用者代码处的函数, 内联函数是通过编译器控制来实现的.
内联函数是真正的函数, 只是在需要用到的时候, 内联函数像宏一样的展开, 所以取消了函数的参数压栈, 减少了调用的开销.
内联函数必须是和函数体声明在一起才有效.
内联函数的函数体过大, 一般的编译器会放弃内联方式, 而采用普通的方式调用函数.
Example: inline function(int i)
inline int function(int i) {return i*i;}
可以用内联函数完全取代预处理宏.