inline与宏定义

inline与宏定义
Inline内敛函数是c++引入的机制,其目的是解决使用宏定义的一些缺点。
钢套箱为什么要引入内联函数
引入内联函数的主要目的是用它代替C中表达式形式的宏定义,解决程序中函数调用的效率问题。
宏是用预处理器实现的,没有了参数压栈,代码生成等一系列操作,因此效率很高,但是其不能进行参数的有效性检查,也没有C++编译器严格类型检查的好处,另外它的返回值也不能被强制转换成为可转换的合适类型。这样 使用它就存在着隐患和局限性。
Inline推出的目的就是为了取代这种宏定义,消除了宏的缺点,又继承了其优点。
inline函数的优越性
inline定义类的内联函数,函数代码被放入符号表中,在使用时直接进行替换,没有调用的开销,效率很高。
类的内联也是一个真正的函数 ,编译器在调用一个内联函数时,首先会检查它的参数 的类型,保证调用正确。然后在进行一系列的相关检查,就像对待任何一个真正的函数一样 ,这样就消除了它的隐患和局限性。
内联可以作为某个类的成员函数。
inline的使用示例
图像型火焰探测器
class A
{
private:
  int nTest;
public:
  int readTest()
  {
升频    return nTest;
  }
  void setTest(int i);
};
inline void A::setTest(int i)
{
  nTest = i;
电子围栏技术}
类A的成员函数readTest()和setTest()都是inline函数。readTest()函数的定义体被放在类声明中,因而readTest()自动转换成inline函数 。setTest函数的定义体在类声明之外,因此要加上inline关键字。
内联的缺点
内联是以代码膨胀为代价的,仅仅省去了函数调用的开销,从而提高函数的执行效率。一方面,如果执行函数体内的代码的时间相比于函数调用的开销大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的代码量增大,消耗更多的内存空间。以下情况不宜使用内联。
1.如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
2.如果函数体内出现循环,那么执行函数体代码的时间要比函数调用的开销大水浴式汽化器
内联和宏的区别
家庭供暖系统1.内联函数是在编译时展开的,宏在预编译时展开的。
2.在编译的时候内联函数可以直接被嵌入到目标代码,而宏只是一个简单的文本替换。
3.内联函数可以完成诸如类型检测,语句是否正确等编译功能,宏就不具有这样的功能。
4.宏不是函数,inline函数是函数
5.宏在定义的时候一定要小心处理宏参数,否则容易出现二义性。而内联函数定义时不会出现二义性。
更多请前往个人文库
wenku.baidu/p/helpylee

本文发布于:2024-09-22 23:22:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/215517.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   内联   代码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议