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

数字营销技术应用网站兰州seo快速优化报价

数字营销技术应用网站,兰州seo快速优化报价,wordpress右键插件,网站开发合同模板免费内联函数定义 inline关键字是C99标准的型关键字#xff0c;其作用是将函数展开#xff0c;把函数的代码复制到每一个调用处。这样调用函数的过程就可以直接执行函数代码#xff0c;而不发生跳转、压栈等一般性函数操作。可以节省时间#xff0c;也会提高程序的执行速度。 …内联函数定义 inline关键字是C99标准的型关键字其作用是将函数展开把函数的代码复制到每一个调用处。这样调用函数的过程就可以直接执行函数代码而不发生跳转、压栈等一般性函数操作。可以节省时间也会提高程序的执行速度。 为什么需要内联函数 在C语言中如果一些函数被频繁的调用不断地用函数入栈即函数栈则会造成栈空间或者栈内存的大量消耗为了解决这个问题特别的引入了inline关键字表示为内联函数。 栈空间指的是函数内数据的内存空间在一个系统下栈空间的资源是有限的假如频繁大量的使用就会因栈空间的不足而导致出错函数的死循坏递归调用的最终结果就是导致栈内存空间的枯竭。 #include stdio.h //函数定义为inline即:内联函数 inline char* dbtest(int a) {return (i % 2 0) ? 奇 : 偶; } int main() {int i 0;for (i1; i 100; i) {printf(i:%d 奇偶性:%s /n, i, dbtest(i)); } }上面的例子就是标准的内联函数的用法使用inline修饰带来的好处我们表面看不出来其实在内部的工作就是在每个for循环的内部任何调用dbtest(i)的地方都换成了(i % 2 0) ? 奇 : 偶这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。 内联函数注意事项 关键字inline必须与函数的定义体放在一起才能使函数成为内联函数仅仅将inline放在函数声明前面不起作用 如下风格的函数fun则成为内联函数 void fun(int x, int y); inline void fun(int x, int y) //inline与函数的定义放在一起 {}关键字inline的使用是有所限制的 inline只适合函数体内代码比较简单的函数使用不能包含复杂的结构控制语句例如while、switch并且内联函数本身不能是直接递归函数函数内部调用自己的函数。 inline仅是一个对编译器的建议 inline函数仅仅是一个对编译器的建议所以最后能否真正内联看编译器的意思它如果认为函数不复杂能在调用点展开就会真正内联并不是说声明了内联就会内联声明内联只是一个建议而已。 建议inline函数的定义放在头文件中 其次因为内联函数要在调用点展开所以编译器必须随处可见内联函数的定义要不然就成了非内联函数的调用了。所以这要求每个调用了内联函数的文件都出现了该内联函数的定义。 因此将内联函数的定义放在头文件里实现是合适的省却你为每个文件实现一次的麻烦。 声明跟定义要一致如果在每个文件里都实现一次该内联函数的话那么最好保证每个定义都是一样的否则将会引起未定义的行为。如果不是每个文件里的定义都一样那么编译器展开的是哪一个那要看具体的编译器而定。所以最好将内联函数定义放在头文件中。 static和inline联合使用 static是静态修饰符由其关键字修饰的变量会保存到全局数据区对于普通的局部变量或者全局变量都是由系统自动分配内存的并且当变量离开作用域的时候释放掉而使用static关键字来修饰只有当程序结束时候才会释放掉使用static inline修饰时函数仅在文件内部可见不会污染命名空间另外函数在运行过程中也会分配内存空间但是由于static的存在就和修饰变量类似它只会开辟一块内存空间。 内联函数优缺点 普通函数在调用过程中会对寄存器中内容进行上下文切换push和pop操作而内联函数则不需要所以普通函数相比内联函数耗时要多一些。 当函数使用次数比较多的时候内联函数在每个调用的地方都会被展开所以导致固件大小会变大同一段代码会多次重复出现在固件中。而普通函数则没有此问题不管调用的函数的次数多少函数在固件中均只占用一处空间利用率较高。inline函数其实就是空间换时间 inline 和宏的区别 虽然inline函数和带参数的宏很像但是在使用方法上和宏还是有很大区别的 inline()函数带参数的宏展开的时机在编译的时候展开因此inline关键字是一个编译关键字在预处理时展开因此#define关键字是一个预处理关键字参数类型检查inline()函数是一中函数会进行严格的参数类型检查不会检查参数类型只是做简单的字符串替换因此在使用带参数的宏时会有一些副作用编写程序是要人为预防是否允许有复杂语句不允许出现复杂语句如果出现复杂语句该函数将不会展开例如递归大型循环等对此不做要求。宏只是做字符串替换操作而不了解语句的含义是否一定被展开不一定是否展开由编译器决定一定只要使用了宏就可以保证被展开接口封装是否是否支持调试是否 总结 内联函数相比宏函数会进行语法检查。宏函数是在预处理阶段生效内联函数是在编译阶段进行语法检查然后替换。 内联函数相比普通函数少了上下文切换的步骤所以执行会更快一些。 内联函数被多次调用会使固件大小膨胀内联函数的高速是以空间来换时间。 内联函数不可递归。 如果函数内容太过于复杂编译器会忽略inline关键字把他当成普通函数来处理。 本文参考 https://zhuanlan.zhihu.com/p/448262183 https://zhuanlan.zhihu.com/p/50812510 https://cloud.tencent.com/developer/article/2224955
http://www.hkea.cn/news/14500819/

相关文章:

  • 摄像头做直播网站织梦动漫网站模板
  • 济南市住房和城乡建设局网站网站的后端怎么开发
  • 学风建设专题网站厦门seo排名优化公司
  • 官方网站包括哪几个网站陶瓷网站模板
  • 视频网站开发技术WordPress搜索词记录
  • 相册制作整站seo优化推广
  • 寄生虫做网站流量网业大全
  • 门户子网站建设申请网站根目录是什么
  • 学做效果图网站有哪些软件有哪些wordpress搜索跳转
  • 织梦怎么查看网站点击app设计开发
  • 网站都是用什么编写的颍上网站建设
  • 天津网站优化排名推广企业网络推广哪家公司好
  • 创建网站公司好中文简洁网站设计图
  • wordpress站点统计插件app store官方正版下载
  • 招聘网站做两份简历上海市2022进博会
  • 南京凯盛建设集团有限公司网站php 数据库 wordpress
  • 山东住房建设部网站网络营销方式有哪些免费
  • 政务公开和网站建设工作问题做贸易注册网站用自己名字
  • 做纺织的用什么网站婚庆网站有哪些
  • 网站建设z上海网络建设公司
  • 卓训网是个什么网站html公司网页
  • 微信 网站设计模板免费下载歌曲的网站
  • 汕头免费建站泰安微网站建设
  • 电子商务网站建设各项费用预算是多少旅游网站的功能结构图
  • 做集团网站个人做外贸怎样起步
  • 网站制作的差异化定位求职简历模板2021
  • 网站一般做几页建设网站怎样提要求
  • 网站按钮确定后图片怎么做电影网站如何建设会员式
  • 重庆交通建设集团网站学院网站建设 好处
  • 建设部网站已经公布黑名单网站静态模板下载