来文来自c++ primer+puls5中
inline工具是c++新增的特性。
c语言使用预处理器语句#define来提供宏——内联函数的原始实现例如,下面是一个计算平方的宏:
#define SQUARE(X) X*X
这并不是通过传递参数实现的,而是通过文本替换来实现的——x是“参数 ”的符号标记
d= SQUARE(c++) -> d = c++*c++;
这样子是不能正常工作的,就算是通过括号来进行改进:
#define SQUARE(x) ((x)*(x))也不能解决问题,因为宏不能按值传递,而是使用新的定义,SQUARE(C++)仍将c递增两次,这里的目的不是演示如何编写宏,而是指出,如果使用C语言的宏执行了类似函数的功能,应考虑将它们转换为C++内联函数