内联函数inline 和 宏define的区别

5 篇文章 0 订阅

宏define

       定义预编译时的宏只是在编译阶段进行简单的代码替换,多用于

定义表达式和常量。

     优点:1.定义的宏就是在编译阶段替换,不会像普通函数那样涉及到

                 2.参数的出栈和入栈,这样效率就高

     缺点:1.这种宏定义在形式上类似于一个函数,但是在使用的时候,仅仅

                     是在做预处理器符号表中的简单替换

                 2.不能对参数进行有效性的检测(只是简单文本替换,不是参数传递)

                 3.并且它的返回值不能被强制转换成可转换的合适的类型;

                 4. 宏不能进行调试,会使代码变长

inline 内联函数

    在一个函数的前面加上inline,这个函数就是内联函数,在运行时调用位置展开函数代码

内联函数使用场景:函数使用频繁,代码内没有递归或者循环,代码量小

      特点:类中的成员函数是默认的内联函数

                 内联函数的定义必须出现在第一次调用内联函数之前

    优点:

             1.有类型检测,更加的安全

              2.内联函数是在程序运行时展开而且进行的时参数传递

             3.编译器会检测内联函数是否满足要求,若不满足就当普通函数使用

               (内联函数不能递归,)

    缺点:

             代码量变大,占用内存增多

 

两者进行对比:

      相同点:两者都是加快程序运行效率

     不同点:1.内联函数调用是传参,宏定义只是简单的文本替换

                     2.内联函数是在程序运行函数调用处展开代码,宏定义是在程序编译时进行替换

                     3.内联函数有类型检测更加安全,宏定义没有类型检测

                     4.内联函数在运行时可以调试,宏定义不可以

                     5.类中的成员函数是默认的内联函数

                     6.内联函数可以访问类的成员变量,宏不可以 

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值