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

上饶网站开发 app开发wordpress search标签页

上饶网站开发 app开发,wordpress search标签页,长春互联网公司哪里多,网络营销推广方案总结__attribute__ 是一个编译器指令#xff0c;其实是 GNU C 的一种机制#xff0c;本质是一个编译器的指令#xff0c;在声明的时候可以提供一些属性#xff0c;在编译阶段起作用#xff0c;来做多样化的错误检查和高级优化。用于在 C、C、Objective-C 中修饰变量、函数、参… __attribute__  是一个编译器指令其实是 GNU C 的一种机制本质是一个编译器的指令在声明的时候可以提供一些属性在编译阶段起作用来做多样化的错误检查和高级优化。用于在 C、C、Objective-C 中修饰变量、函数、参数、方法、类等。合理使用  __attribute__ 有什么好处给编译器提供上下文帮助编译器做优化合理使用可以收到显著的优化效果。编译器会根据  __attribute__ 产生一些编译警告使代码更规范。给代码阅读者提供必要的注解助其理解代码意图。总之 __attribute__ 起到了给编译器提供上下文的作用如果错误的使用 __attribute__ 指令因为给编译器提供了错误的上下文由此引起的错误通常很难被发现。强符号和弱符号在同一作用域下不能定义同一个变量或函数很多C语言学习者都理所当然地这么认为。这个其实是是有所偏颇的GNU C对标准C语言进行了扩展在GCC中对于符号(在编译时变量和函数都被抽象成符号)而言存在着强符号和弱符号之分。是的是否支持这个特性是由不同的C语言标准决定的。对于C/C而言编译器默认函数和已初始化的全局变量为强符号而未初始化的全局变量为弱符号在编程者没有显示指定时编译器对强弱符号的定义会有一些默认行为同时开发者也可以对符号进行指定使用attribute((weak))来声明一个符号为弱符号。定义一个相同的变量当两者不全是强符号时gcc在编译时并不会报错而是遵循一定的规则进行取舍当两者都为强符号时报错redefinition of xxx当两者为一强一弱时选取强符号的值当两者同时为弱时选择其中占用空间较大的符号这个其实很好理解编译器不知道编程者的用意选择占用空间大的符号至少不会造成诸如溢出、越界等严重后果。在默认的符号类型情况下强符号和弱符号是可以共存的类似于这样int x; int x  1;编译不会报错在编译时x的取值将会是1.但是使用 __attribute__((weak)) 将强符号转换为弱符号却不能与一个强符号共存类似于这样int __attribute__((weak)) x  0; int x  1;编译器将报重复定义错误。强引用和弱引用除了强符号和弱符号的区别之外GNUC还有一个特性就是强引用和弱引用我们知道的是编译器在编译阶段只负责将源文件编译成目标文件(即二进制文件)然后由链接器对所有二进制文件进行链接操作。在分离式编译中当编译器检查到当前使用的函数或者变量在本模块中仅有声明而没有定义时编译器直接使用这个符号将工作转交给链接器链接器则负责根据这些信息找到这些函数或者变量的实体地址。因为在程序执行时程序必须确切地知道每个函数和全局变量的地址。如果没有找到该符号的实体就会报undefined reference错误这种符号之间的引用被称为强引用.编译器默认所有的变量和函数为强引用同时编程者可以使用 __attribute__((weakref)) 来声明一个函数注意这里是声明而不是定义既然是引用那么就是使用其他模块中定义的实体对于函数而言我们可以使用这样的写法__attribute__((weakref)) void func(void);然后在函数中调用func()如果func()没有被定义则func的值为0如果func被定义则调用相应func在《程序员的自我修养》这本书中有介绍它是这样写的__attribute__((weakref)) void func(void); void main(void) {if(func) {func();} }但是在现代的编译系统中这种写法却是错误的编译虽然通过(有警告信息)但是却不正确:warning: ‘weakref’ attribute should be accompanied with an ‘alias’ attribute [-Wattributes]警告显示weakref需要伴随着一个别名才能正常使用强/弱符号和强/弱引用的作用这种弱符号、弱引用的扩展机制在库的实现中非常有用。我们在库中可以使用弱符号和弱引用机制这样对于一个弱符号函数而言用户可以自定义扩展功能的函数来覆盖这个弱符号函数。同时我们可以将某些扩展功能函数定义为弱引用当用户需要使用扩展功能时就对其进行定义链接到程序当中如果用户不进行定义则链接也不会报错这使得库的功能可以很方便地进行裁剪和组合。注意C标准里根本没有提到强、弱符号。这只是GCC这个实现定义的特性在MS C编译器里是不存在这个概念的。参考博客https://www.cnblogs.com/downey-blog/p/10470674.html https://blog.csdn.net/astrotycoon/article/details/8008629链接https://xiaoyege.blog.csdn.net/article/details/93674095仅供大家学习参考与知识传播版权归原作者所有如有侵权麻烦联系进行删除感谢~
http://wiki.neutronadmin.com/news/105305/

相关文章:

  • 凡科网站空间慢wordpress图片源码
  • 合肥建设工程竣工结算备案网站建设工程司法解释(一)
  • 深圳线运营是网站建设天津建设银行网站
  • 高校网站建设的重要性网站建设和维护要点
  • 网络直播平台搭建seo文章代写平台
  • 电脑手机一体网站张家界有没有做网站的公司
  • 海口房产网站建设wordpress 商务模板
  • 雅虎网站收录入口住房和城乡建设部政务服务门户app
  • 佛山做网站开发有哪些可以做任务的网站
  • 温州建校官网整站seo技术搜索引擎优化
  • 做网站能赚到流量费吗如何建设好医院网站
  • 网站添加白名单长沙中小企业有哪些公司
  • 网站设计网页的优缺点阿里巴巴国际站网站建设
  • 站长申论如何建立淘宝客网站
  • 网站建设与管理试卷_美食网站建设页面要求
  • 网站管理后台地址网上商城图片
  • 个人建站需要多少钱wordpress 啊树
  • 邢台做网站建设优化制作公司金信一条龙优秀个人网站模板下载
  • 网站建设与网页设计从入门到精通wordpress 千万数据
  • 扁平化网站设计方案做的好的宠物食品网站
  • 做网站需要注意多少页手机怎么做程序
  • 网站建设一键搭建商务网站开发背景
  • 怀化seo网站青岛市建设厅网站
  • 网站用什么图片格式好seo咨询推广找推推蛙
  • 中国建设银行网站公积金查询系统网站开发和c语言
  • 西班牙语网站建设中企动力的网站
  • 荷城网站制作公司项城网站建设
  • h5网站开发平台外贸网站建设需要什么
  • 做app模板网站下列关于网站开发中网站上传
  • 网站详细设计苏州制作网站的公司哪家好