注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风雨启示录

欢迎光临我的网店优优我心:http://uumyheart.taobao.com

 
 
 

日志

 
 

[C语言]“强引用”和“弱引用”的概念  

2012-11-12 22:35:09|  分类: C语言学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

系统中某些扩展功能模块可能时有时无,如果要求系统在两种情况下都能正常工作,这就需要在功能模块不存在时主程序中对这些扩展功能模块的引用不能报错——这就是“强引用”和“弱引用”的概念。


模块A引用模块B的一个函数时,如果模块B的这个函数不存在时,模块A不报错
    默认地,本模块中所有对外部符号的引用在链接时都是强引用,该符号必须能够被正确决议(理解为“绑定”的同义词),否则链接器就会报错;GCC中可以通过 __attribute__ ((weakref)) 关键字显式地将对一个外部符号的应用定义为弱引用,这样即使在链接的时候该符号并没有正确地找到定义,链接器也不会报错,而只是将该符号的符号值(st_value)置为0,但是这样得到的可执行程序在执行时会出错,因为当调用弱符号时,弱符号地址为0,属于非法访问。因此在程序中调用一个外部符号时,应该先判断其值是否为0,若不为0再进行调用。


  评论这张
 
阅读(1644)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017