在C++中内联函数:
内联函数即是在函数的声明和和定义前面加上“inline”关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传递表达式的值(这里为12),而宏定义则不同。
在C中的宏定义:
C语言使用的预处理器语句#define来提供宏,例如:#define SQUARE(X) X*X,这里宏并不是通过值传递来实现的,而是通过文本替换来实现的。
内联函数和宏定义的区别用下面的代码来观察:
//内联函数 inline double square(double x) {return x*x}; int main() { using namespare std; double b; b = square(4.5 + 7.5); cout << "b = " << b << endl; } //这里的输出结果:b = 144;
//下面是运用宏定义来处理的结果
#define SQYARE(X) X*X;
//如果按照上面的代码来处理的话,那输出结果为:4.5+7.5*4.5+7.5的结果,这里就说明宏定义只是简单的替换文本,并不是用值传递的方式的处理数据。
如果要使用宏定义来达到内联函数的效果,我们可以遮阳定义宏,
#define SQUARE(X) ((X)*(X))