arm编程中__packed的使用
来源:互联网 发布:白苹果 保留数据 编辑:程序博客网 时间:2024/05/22 15:58
今天在看代码的时候看到以下代码:
struct dsi_ctrl_hdr {char dtype;/* data type */char last;/* last in chain */char vc;/* virtual chan */char ack;/* ask ACK from peripheral */char wait;/* ms */short dlen;/* 16 bits */} __packed;结构体的末尾用__packed进行限定。因为不懂其用法,于是通过百度整理了__packed的作用及用法。
__packed 限定符将所有有效类型的对齐边界设置为 1。这就意味着:
1、不会插入填充以对齐压缩对象
2、使用未对齐的访问读取或写入压缩类型的对象。
使用 __packed 限定符声明结构或联合后,__packed 将应用于该结构或联合的所有成员。成员之间或结构末尾均没有填充。必须使用 __packed 声明压缩结构的所有子结构。可以单独压缩非压缩结构的整型子字段。
用法
若要将结构映射到外部数据结构或访问未对齐数据,__packed 限定符非常有用;但由于访问开销相对较高,通常对节省数据大小并没有什么帮助。通过仅对需要压缩的结构中的字段进行压缩,可以减少未对齐访问的数量。
限制
以下限制适用于使用 __packed 的场合:
1、__packed 限定符不能用于以前未使用 __packed 声明的结构。
2、与其他类型限定符不同,不能同时具有同一结构类型的 __packed 版本和非 __packed 版本。
3、__packed 限定符不影响整型局部变量。
4、压缩结构或联合与相应的非压缩结构的分配不兼容。由于这些结构具有不同的内存布局,因此,将压缩结构分配给非压缩结构的唯一办法是逐个字段进行复制。
5、没有定义对 __packed 进行类型转换所产生的影响。也没有定义将非压缩结构类型转换为压缩结构类型所产生的影响。可以合法地将指向整型的指针类型显式或隐式转换为指向压缩整型的指针类型。也可以对 char 类型进行 __packed 类型转换。
6、不存在压缩数组类型。压缩数组是指具有压缩类型的对象数组。数组中没有进行填充。
1 0
- arm编程中__packed的使用
- arm编程中__packed的使用
- ARM编译器中对齐的使用__align和__packed
- ARM中使用C编程
- __packed引起的问题
- __packed 关键字 的作用
- ARM中LTORG的使用
- 详解arm中entry的使用
- MDK ARM中__weak关键字的使用
- ARM 中可用性集使用的注意事项
- ARM 中可用性集使用的注意事项
- ARM的编程模型
- stm32中字节对齐问题(__align(n),__packed用法)
- ARM C嵌入式编程中一些常见的标识符
- 关于ARM使用AXD编程H-Jtag问题的总结
- ARM汇编编程基础(四) -- ADS开发环境的使用
- ARM汇编编程基础(四) -- ADS开发环境的使用
- ARM汇编编程基础(四) -- ADS开发环境的使用
- 关于推送遇到的一些问题
- JS 在VS2005 aspx ie6 中提示“未结束的字符串常量”错误 html页面中不报错
- AnyGantt Flash甘特图组件免费下载及使用教程
- ubuntu下如何获取源码包和源码
- Android:导出签名APK时,出现"app_name" is not translated 错误
- arm编程中__packed的使用
- kindeditor4.1.4 asp.net C# 配置及相关使用技巧 附带读取txt文本方法
- (随笔)N2661 - A Foundation to Sleep On(新标准的Time设施)
- ./configure,make,make install的作用
- 如何解决VS2008创建智能设备项目,编译较慢
- simple JSON 安装 !
- centos操作系统安装mysql(yum方式)
- no last call on a mock available easymock
- java中乱码问题