C++中的内联函数和C中的宏定义的区别

在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))
原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4854599.html