gcc weak/alias/weakref/__typeof()属性总结
来源:互联网 发布:网络病毒营销企业 编辑:程序博客网 时间:2024/05/19 21:15
今早偶尔看了一些关于linux socket源码的东西,发现socket在编写过程中大量利用了gcc的扩展功能,现就weak/alias/weakref/__typeof()的使用方法及特点做一简单总结。
1. 弱符号 weak
在gcc中全局函数或已初始化的全局变量属于强符号,在链接时如果存在多个强符号则会出现重定义错误。弱符号则是相对于强符号而言,主要指未初始化的全局变量或通过__attribute__((weak))来显式申明的变量或函数。通过对于强弱符号的分析我们可以知道,若要定义弱符号则需要借助gcc扩展:__attribute__((weak))。现就以上扩展的特点做详细分析。
- 链接时强弱符号都存在时以强符号为准;
- 链接时如果只有弱符号时以弱符号为准;
- 若弱符号仅声明未定义,则链接时不会报未定义错误,但在运行过程中会出现段错误;
- 弱符号还有一个规则,就是两个都是弱符号时,以内存占用大小较大的那个符号为准。
2. 别名 alias
这一属性非常简单,就是给函数起了一个别名。
对于alias的描述请见上一篇blog。
3. 弱引用 weakref
weakref就是声明某个引用为弱引用,弱引用时如果需引用符号不存在也不会链接出错,而是将需要引用的符号定义为WEAK属性及0地址。需要注意的是weakref必须要配合alias使用及必须是static定义。weakref与alias的区别在于如果原函数不存在时声明alias会出错,通过weakref方法,可以让func未定义就可以编译通过。
4. __typeof()
通过字面意思就可以了解个大概,typeof可以获得表达式或类型的类型,typeof的结果主要可以用于定义函数或变量。
具体内容可参考一下blog。
http://blog.chinaunix.net/uid-28458801-id-4200573.html
0 0
- gcc weak/alias/weakref/__typeof()属性总结
- GCC _attribute__ weak weakref
- gcc之weak,alias属性
- GCC __attribute__ 之weak,alias属性
- gcc attribute weak & alias应用
- gcc attribute weak & alias应用
- gcc __attribute__ ((weak, alias (#name)))
- gcc attribute weak & alias应用
- gcc attribute weak & alias应用
- __attribute__ 之weak,alias属性
- _attribute__ 之weak,alias属性
- __attribute__ 之weak,alias属性
- __attribute__ 之weak,alias属性
- __attribute__ 之weak,alias属性
- __attribute__ 之weak,alias属性
- __attribute__ 之weak,alias属性 .
- gcc __attribute__ ((weak, alias (#name))) 1
- 【转】__attribute__ 之weak,alias属性
- Query获取不到动态元素?
- Show me the code之Python练习册 Q17~19 xml操作
- OnClick的三种方式
- PPT转化成Image、PPTX、XPS、EMF
- Android - 简单的无线网络分析APP
- gcc weak/alias/weakref/__typeof()属性总结
- 阿里天池比赛快速入门
- 0037Win7下U盘安装Ubuntu14.04双系统步骤详解
- 5.0以上运行正常,5.0以下报错
- 图解密码技术笔记(四)单向散列函数——获取消息的指纹
- Hadoop中的一些基本操作
- php ++和逻辑运算的细节
- Android之图片旋转
- Jupyter Notebook快捷键