当前位置: 首页 > news >正文

宣城市市政建设集团公司网站学校文化建设的网站

宣城市市政建设集团公司网站,学校文化建设的网站,东莞做网站哪家公司好,淮北做网站本文旨在讲解C中的函数内联相关知识#xff0c;读完这篇文章#xff0c;希望读者们会对函数内联有更深一步的认识#xff01; 内联函数的定义 在计算机科学中#xff0c; 内联函数 #xff08;有时称作 在线函数 或 编译时期展开函数 #xff09;是一种编程语言结构中的函数内联相关知识读完这篇文章希望读者们会对函数内联有更深一步的认识 内联函数的定义 在计算机科学中 内联函数 有时称作 在线函数 或 编译时期展开函数 是一种编程语言结构用来建议 编译器 对一些特殊 函数 进行内联扩展有时称作在线扩展 也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方 上下文 从而节省了每次调用函数带来的额外时间开支) C引进内联函数的原因 C语言支持内联函数其目的是为了提高函数的执行效率速度。 宏定义的缺陷 在C程序中常常使用宏定义来提高代码执行效率宏定义本身不是一种函数它只是一种简单的替代其省去了参数压栈生成汇编语言的CALL调用返回参数执行return等过程从而提高了速度使用宏定义的最大缺点是容易出错预处理器在拷贝宏代码时常常会产生意想不到的边界效应通过阅读下面代码可以发现宏定义的一些缺点 1.代码容易出错 #define Add(x,y) xy int main() {int result 3 * Add(1, 2);cout result endl; //结果输入5 } 对于上述代码初学者很容易将宏函数代码写错没有加上括号从而导致结果与自己预期的结果有出入 2.宏定义不可调试 宏的另一个缺点就是不可调试但是内联函数可以调试内联函数不是像宏一样进行代码的展开么怎么能够调试呢其实内联函数的“可调试”不是说它展开后还可以调试而是在程序的调试版本Debug版本里它根本没有真正的内联编译器像普通函数那样为它生成含有调试信息的可执行代码在程序的发行Release版本里编译器才会实现真正的内联所以我们可以通过release版本来观察其内联的实现过程 判断函数成为内联函数 可以通过简单的调试将代码转化为汇编代码然后通过观察底层的实现因为调用函数栈帧会使用Call指令这是一种简单的观察方法 内联函数的编程风格 注内联函数的定义和声明不能分离 关键字Inline必须与函数定义体放在一起才能使函数实现真正的内联仅把inline放在函数声明的前面不起任何作用 例如如下代码 如下风格的Add函数不能成为内联函数 inline void Add(int x,int y //inline仅与函数放在声明放在一起 void Add(int x,int y {******** }如下风格的Add函数可以成为内联函数void Add(int x,int y inline void Add(int x,int y //inline与函数定义体放在一起 {******** } 上述不能成为内联函数的情况编译器会报出如下错误错误如下 编译器不能链接Add函数这是为什么呢因为定义时把Add函数定义为内联类型其作用只是单纯的展开函数其不会在符号表调用相关字符地址等所以当引用Add函数时虽然编译器认识这个函数但是它不知道下一步该干什么如何链接到Add函数 所以说inline是一种“用于实现的关键字”而不是一种“用于声明的关键字”一般情况下用户可以阅读函数声明的声明但看不见函数的定义尽管大多数教科书中在内联函数的声明和定义都加上了inline关键字但是根据C程序设计风格inline不应出现在函数的声明中因为用户没有必要知道函数是否需要内联 内联函数的特性 1. inline是一种以空间换时间的做法如果编译器将函数当成内联函数处理在编译阶段会用函数体替换函数调用缺陷可能会使目标文件变大优势少了调用开销提高程序运行效率。 2. inline对于编译器而言只是一个建议不同编译器关于inline实现机制可能不同一般建议将函数规模较小(即函数不是很长具体没有准确的说法取决于编译器内部实现)、不是递归、且频繁调用的函数采用inline修饰否则编译器会忽略inline特性。 慎用内联函数 内联能提高函数的执行效率为什么不把所有的函数都定义为内联函数呢 如果所有的函数都是内联函数还用得着“内联”这个关键字么 内联并不是万能的它以空间换时间为代价仅仅省去了函数调用的开销从而提高了程序的执行效率注意这里的“函数的调用开销”并不包括执行函数体所需要的开销而是仅指参数压栈跳转退栈和返回操作如果执行函数体内的代码时间比调用函数开销要大的多那么内联的效率收入会很小另一方面每一处内联函数的调用都需要拷贝代码使得程序的总代码量增大消耗更多的内存空间 以下情况不宜使用内联 1.函数体内的代码较长使用内联会使执行代码膨胀 2.函数体内存在过多的循环或控制结构那么执行函数体内的代码的时间会比函数调用开销大的多因此内联的意义并不大 至此有关内联函数的介绍完毕一些专业术语查自高质量程序设计指南C/C希望读完这篇文章能使读者对内联函数有更深一步的认识
http://www.w-s-a.com/news/464624/

相关文章:

  • 无极磁铁网站如何把地图放到自己做的网站上
  • 青浦赵巷网站建设公司网站开发需求文档
  • 苏州网站建设的公司哪家好无锡网站制作那些
  • 装饰公司网站模板科技成果鉴定机构
  • 给公司做的东西放到私人网站上十堰为企业做网站的单位
  • 手机网站建设价钱手机自己做网站
  • 网站建设属于哪种公司电子商务查询网站
  • 工程建设标准强制性条文最新版本网站关键词排名优化应该怎么做
  • 网站网页设计内容品牌高端网站建设公司
  • 网站开发报价 福州中国建筑网官网手机版
  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的
  • 南京网站做的好的公司猪八戒网站做推广怎么样
  • 建站收费标准福州网站搭建
  • 做防护用品的网站欧美网站建设风格特点
  • 龙华做网站联系电话北京软件开发培训班
  • 做网站运营有前途网站的建设与管理的心得体会
  • 河南网站推广怎么做网页制作免费下载
  • 网站如何屏蔽中国ip商丘网站建设的公司哪家好
  • 东莞广告公司东莞网站建设价格鹤壁哪有做网站的
  • 门户网站界面设计logo设计商标设计
  • 建设银行网站驱动宁波网站建设相信荣胜网络
  • 八里河网站建设项目建设可行性企业品牌推广方式有哪些
  • jsp网站开发之html入门知识广州服装设计公司
  • 做电商看的网站有哪些个人网页制作成品免费