arm编程中__packed的使用
来源:互联网 发布:爱名网域名过户步骤 编辑:程序博客网 时间:2024/05/22 14:01
今天在看代码的时候看到以下代码:
- 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 限定符将所有有效类型的对齐边界设置为 1。这就意味着:
1、不会插入填充以对齐压缩对象
2、使用未对齐的访问读取或写入压缩类型的对象。
使用 __packed 限定符声明结构或联合后,__packed 将应用于该结构或联合的所有成员。成员之间或结构末尾均没有填充。必须使用 __packed 声明压缩结构的所有子结构。可以单独压缩非压缩结构的整型子字段。
若要将结构映射到外部数据结构或访问未对齐数据,__packed 限定符非常有用;但由于访问开销相对较高,通常对节省数据大小并没有什么帮助。通过仅对需要压缩的结构中的字段进行压缩,可以减少未对齐访问的数量。
限制
以下限制适用于使用 __packed 的场合:
1、__packed 限定符不能用于以前未使用 __packed 声明的结构。
2、与其他类型限定符不同,不能同时具有同一结构类型的 __packed 版本和非 __packed 版本。
3、__packed 限定符不影响整型局部变量。
4、压缩结构或联合与相应的非压缩结构的分配不兼容。由于这些结构具有不同的内存布局,因此,将压缩结构分配给非压缩结构的唯一办法是逐个字段进行复制。
5、没有定义对 __packed 进行类型转换所产生的影响。也没有定义将非压缩结构类型转换为压缩结构类型所产生的影响。可以合法地将指向整型的指针类型显式或隐式转换为指向压缩整型的指针类型。也可以对 char 类型进行 __packed 类型转换。
6、不存在压缩数组类型。压缩数组是指具有压缩类型的对象数组。数组中没有进行填充。
阅读全文
0 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开发环境的使用
- 欢迎使用CSDN-markdown编辑器
- 成就优秀人生的建议
- 机器学习之线性回归及梯度下降
- windows安装TortoiseGit详细使用教程【基础篇】
- springboot Configuration 获取不到@value配置问题
- arm编程中__packed的使用
- 《多移动机器人协同原理与技术》读书笔记(一、绪论)
- poj2018 Best Cow Fences(求至少k个连续数 使得平均值最大)
- 后缀自动机 求不同的子串数目
- 声明式服务调用:Spring Cloud Feign
- 循环输入二维数组的方法
- 【错误解决】Spring JPA的错误及其解决方案
- 连十分钟都坚持不了,学长你不行啊!
- Exclipse快捷键迅速打开文件