zoukankan      html  css  js  c++  java
  • 内联函数与宏

    ,我们有时会定义一些预处理宏,如

    #define COMP(x) ((x)>0?(x):0) 就定义了一个宏。

    使用宏的原因是——函数调用有一定的时间和空间开销(在函数调用的使用程序跳到函数所在内存中的地址,执行完之后再跳回原来的位置继续执行。这种转移需要保存现场并记忆当前内存位置,执行完函数之后再恢复现场),而宏只是在预处理的地方把代码展开,不需要额外的时间空间开销,因而提高了效率。

    内联函数,使用Inline来定义,在类的内部定义了函数体的函数被默认为内联函数。

    内联函数在C++类中,应用最广的,应该是用来定义存取函数。我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。读写就必须使用成员接口函数来进行。如果我们把这些读写成员函数定义成内联函数的话,将会获得比较好的效率。

    Class Test{

     Private:

      Int test;

     Public:

      Int getTest(){ return test;}

     Void setTest(int t) {test=t;}

    }

    内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。

    当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。

    摘抄自http://blog.csdn.net/longjing1113/article/details/8807671

  • 相关阅读:
    什么是RUP
    oracle 导入导出
    jsp 标签
    java json 交互
    Spring MVC 学习过程遇到的问题
    Spring 与其他ORM 框架结合 作数据持久层解析 (转)
    Spring mvc 中快速获取request、reponse、session
    Spring 数据绑定
    spring mvc 请求对应控制器的解析策略配置
    spring 的几种注解
  • 原文地址:https://www.cnblogs.com/kaixuanguilai/p/3964577.html
Copyright © 2011-2022 走看看