内联函数与宏

,咱们有时会定义一些预处理宏,如函数

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

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

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

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

Class Test{内存

 

 Private:get

 

  Int test;编译器

 

 Public:编译

 

  Int getTest(){ return test;}test

 

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

 

}

 

内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是经过编译器控制来实现的。并且内联函数是真正的函数,只是在须要用到的时候,内联函数像宏同样的展开,因此取消了函数的参数压栈,减小了调用的开销。你能够象调用函数同样来调用内联函数,而没必要担忧会产生于处理宏的一些问题。

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

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

相关文章
相关标签/搜索