zoukankan      html  css  js  c++  java
  • 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))
  • 相关阅读:
    unity 反编译 step2 dll -->reflector
    unity 反编译 step1 disUnity
    rpg
    cmake使用
    linux mysqld的启动过程
    unity内存加载和释放
    Linux下MySql数据库常用操作
    MySQL主从复制与读写分离(非原创,谢绝膜拜)
    linux下IPTABLES配置详解
    linux下查看端口的占用情况
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4854599.html
Copyright © 2011-2022 走看看