关键字: __packed,C语言,内存对齐

【正文】

简单的说,__packed用于表示C语言中结构的压缩,即:没有填充和对齐。

定义如下:

__packed struct P { ... };

struct P pp;    /* pp is a packed struct */

__packed也可以定义为:struct my_unpacked_struct { char c; int i; } __attribute__ ((__packed__));

如果一个结构体定义为 __packed,那么其子结构体也必须为__packed(如果有的话)例如:

struct S {...};

__packed struct P {...};

struct T {

struct S ss; /* OK */

struct P pp; /* OK */

};

__packed struct Q {

struct S ss; /* faulted - sub-structs must be packed */

struct P pp; /* OK */

};

__packed struct P { char c; int x; };

__packed struct {

struct P X;

char z;

struct P Y;

}Q;

此时,Q的内存映像如下:

+---+---+---+---+---+---+---+---+---+---+---+

byte  | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|

| c | ------x------ | z | c | ------x------ |

+---+---+---+---+---+---+---+---+---+---+---+

参考文献:

c语言packed,C 语言中 __packed相关推荐

  1. C语言结构体中__packed 和位段的理解!

    C语言中__packed 和位段的理解 一:__packed typedef __packed struct struct常用在数据结构中.而struct的字节对齐方式对于嵌入式底层的程序员来讲是必须 ...

  2. C语言中__packed

    一:__packed typedef __packed struct struct常用在数据结构中.而struct的字节对齐方式对于嵌入式底层的程序员来讲是必须掌握的.现代计算机中内存空间都是按照by ...

  3. log包在Golang语言的标准库中是怎么使用的?

    Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger.但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等. 01. ...

  4. R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤、条件推理决策树是传统决策树的一个重要变体、条件推理树的分裂是基于显著性测试而不是熵/纯度/同质性度量来选择分裂

    R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤(Conditional inference trees).条件推理决策树是传统决策树的一个重要变体.条件推理树的分裂是基于显著性 ...

  5. R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k个

    R语言使用caret包中的createFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k个 目录

  6. R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样、返回的样本列表长度为k×times个、times为组内抽样次数

    R语言使用caret包中的createMultiFolds函数对机器学习数据集进行交叉验证抽样.返回的样本列表长度为k×times个.times为组内抽样次数 目录

  7. R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

    R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees).使用plot函数可视化训练好的条件推理决策树.条件推理决策树的叶子节点的阴影区域表 ...

  8. R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性

    R语言时间序列数据滚动相关性分析(Rolling correlations).R语言使用zoo包中的rollapply函数计算两个时间序列数据列之间的滚动相关性(Rolling correlation ...

  9. R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形、自定义设置treemap图的调色板、自定义设置treemap标题字体的大小

    R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形.自定义设置treemap图的调色板.自定义设置treemap标题字体的大小 目录

最新文章

  1. Tomcat中出现“RFC 7230 and RFC 3986“错误的解决方法
  2. DDD - 聚合与聚合根_如何理解 Respository与DAO
  3. 【转】【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
  4. [云炬ThinkPython阅读笔记]1.6 形式语言和自然语言
  5. mysql权限与安全
  6. eclipse/MyEclipse 日期格式、注释日期格式、时区问题
  7. 用bat批处理程序通过DOS命令行删除所有的空文件夹
  8. jqgrid如何渲染表格数据_Jqgrid入门-操作表格的数据(二)
  9. linux free命令详解(一)
  10. 基于MapWinGis开发探索(一)
  11. 锁定文件失败 打不开磁盘“E:\HP02\HP01-cl1.vmdk”或它所依赖的某个快照磁盘。 模块“Disk”启动失败。 未能启动虚拟机
  12. 分布式存储系统学习笔记(一)—什么是分布式系统(6)—2PC和Paxos协议
  13. Spring中com.sun.proxy.$Proxy12 cannot be cast to 包名.类名错误
  14. 路由器修改hosts实现域名劫持
  15. oppo刷机工具_黔隆科技刷机教程OPPOA1忘记密码免刷机保资料解屏幕锁教程
  16. 信息系统管理工程师记忆口诀
  17. word文档图标变成白纸_win10word文档图标变白,win10office图标空白
  18. 名师出高徒,VS 2005 调试心得。个人信息管理页面(部分)
  19. 计算机映射小米路由器硬盘用户名,手机、电脑如何远程访问小米路由器HD的硬盘?瞬间变NAS!...
  20. 4G/5G远程网络遥控,图传系统-无人车-无人船-无人机械制作方法

热门文章

  1. MyBatis之批量删除语句
  2. 门户网站服务器8g内存够吗,云服务器8g内存够用吗
  3. 中国移动通信联合会元宇宙产业委员会联席秘书长、北京金山顶尖科技股份有限公司元宇宙研究院院长李正海组织百城万项.石景山元宇宙发展暨工业元宇宙三人行直播第四期活动并做《城市元宇宙体系下的产业发展策略》
  4. Windows 系统错误代码大全5
  5. 平安医疗科技疾病问答迁移学习(CHIP-STS)
  6. 华东理工《文献检索》MOOC (1)---精通中国知网CNKI
  7. 通过光盘重置administrator账号密码
  8. Paxos(帕克索斯)一致性算法[卷一]
  9. javascript:parseInt用法,特殊用法,进制转换
  10. 网上银行等的WEB登陆安全性简要分析