当前位置: 首页 > 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.hkea.cn/news/14439799/

相关文章:

  • 西宁网站制作哪家好如何分析一个网站
  • 网站开发会计科目手机网站静态模板
  • 查找北京国互网网站建设企业系统培训平台
  • 做汽车的网站编辑做网站建设公司怎么选
  • 西安做网站建设的住房与城乡建设部网站特色小镇
  • 网站建设的财务计划django做的电子商务网站
  • 搭建网站服务器多少钱大连金州旅游景点有哪些
  • 网站建设方案200字成都seo优化推广
  • 如何关联网站与网站wordpress开发解析
  • 怎么做网站框架设计培训
  • 广东企业网站建设出售自己的网站
  • 网站的运营费用吗如何做切片网站
  • 电子商务如何做网站销售百度收录的网站
  • php网站开发实例教程案例网站销户说明
  • 网站建设技术分类a5建站
  • 杭州网站制作模板朔州如何做百度的网站
  • 做代练去什么网站安全康保网站建设
  • 网站开发需要哪些基础技术电子商务网站规划的内容
  • dw网站引导页怎么做免费app开发平台
  • 进行公司网站建设方案永久免费手机建站平台
  • c2c商城网站开发苏州模板建站平台
  • 营销网站设计方案邢台交友123
  • 网站seo优化怎么做怎么更换网站logo
  • 定陶区城乡建设局网站专业设计科技展厅公司
  • 零基础搭建网站注册建设通网站首页
  • 清苑区建设网站找那家公司怎么制作一个团购小程序
  • 响应式设计 手机网站shopnc
  • 石家庄网站建设策略网站模块顺序调整
  • 网站后台怎么建设钢结构加工
  • 淘宝网官方网站电脑版海南网络广播电视台开学第一课