OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6015|回复: 2

汉字显示实验结构体为什么要加__packed修饰?

[复制链接]

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2015-1-15 15:41:52 | 显示全部楼层 |阅读模式
5金钱
汉字显示实验有个字体信息结构体:
[mw_shl_code=c,true]//字库信息结构体定义 //用来保存字库基本信息,地址,大小等 __packed typedef struct { u8 fontok; //字库存在标志,0XAA,字库正常;其他,字库不存在 u32 ugbkaddr; //unigbk的地址 u32 ugbksize; //unigbk的大小 u32 f12addr; //gbk12地址 u32 gbk12size; //gbk12的大小 u32 f16addr; //gbk16地址 u32 gkb16size; //gbk16的大小 }_font_info;[/mw_shl_code]
为什么要加__packed来修饰呢?我知道它的意思是单字节对齐,即_font_info类型占25个字节。
但不加__packed修饰就不可以吗?如果没有这个,结构体就是默认的对齐方式,_font_info类型占28个字节.
我试过去掉__packed,实验中汉字出现乱码,当我再次更新字库的时候又显示正常了;
再次还原加上
__packed,重新编译下载代码又是乱码,手动更新字库又显示正常了。
从结果来看,没找出__packed的必需性,不是说单字节对齐(即不对齐)会降低访问效率吗?那加__packed有何意义?仅仅为了节省3字节的内存?




最佳答案

查看完整内容[请看2#楼]

这个在这里是可以不加的. 只是我之前吃过亏,所以养成了不论需不需要,一律加了再说.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-15 15:41:53 | 显示全部楼层
这个在这里是可以不加的.
只是我之前吃过亏,所以养成了不论需不需要,一律加了再说.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-15 23:24:36 | 显示全部楼层
也许就是:  一朝被蛇咬,十年怕草绳.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 00:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表