GCC __attribute__ ((packed))
来源:互联网 发布:ubuntu与fedora的异同 编辑:程序博客网 时间:2024/04/30 01:03
attribute ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:
在TC下:struct my{ char ch; int a;} sizeof(int)=2;sizeof(my)=3;(紧凑模式)
在GCC下:struct my{ char ch; int a;} sizeof(int)=4;sizeof(my)=8;(非紧凑模式)
在GCC下:struct my{ char ch; int a;}attrubte ((packed)) sizeof(int)=4;sizeof(my)=5attribute关键字主要是用来在函数或数据声明中设置其属性。给函数赋给属性的主要目的在于让编译器进行优化。函数声明中的attribute((noreturn)),就是告诉编译器这个函数不会返回给调用者,以便编译器在优化时去掉不必要的函数返回代码。
GNU C的一大特色就是attribute机制。attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。
attribute书写特征是:attribute前后都有两个下划线,并且后面会紧跟一对括弧,括弧里面是相应的attribute参数。
attribute语法格式为:
attribute ((attribute-list))
其位置约束:放于声明的尾部“;”之前。
函数属性(Function Attribute):函数属性可以帮助开发者把一些特性添加到函数声明中,从而可以使编译器在错误检查方面的功能更强大。attribute机制也很容易同非GNU应用程序做到兼容之功效。
本来来自转载:
attribute((packed))详解
- gcc 中的"__attribute__ ((packed))"
- GCC __attribute__ ((packed))
- gcc __attribute__ ((packed)) || __attribute__ ((aligned(4))) 2
- __attribute__ ((packed))
- __attribute__ ((packed))
- __attribute__ ((packed))
- __attribute__((packed))
- __attribute__((packed))
- __attribute__((packed))
- __attribute__ ((packed))
- __attribute__ ((packed))
- __attribute__((packed))
- __attribute__((packed))
- [转]gcc 中的"__attribute__ ((packed))" gcc
- __attribute__((packed))使用介绍
- __attribute__ ((packed)) 的作用
- __attribute__ ((packed)) 的作用
- __attribute__ ((packed)) 的作用
- 【机器学习基础】梯度提升决策树
- uva 524Prime Ring Problem
- kmp算法
- 浅谈javaBean
- Oracle 行转列小结
- GCC __attribute__ ((packed))
- Cocos2dx_世界坐标和模型坐标
- Android常用Uri
- 30天自制操作系统day21
- 构建高并发高可用的电商平台架构实践
- 从is(":checked")说起
- lamp源码安装
- 四元数
- uva 11178