汇集网友智慧,解决技术难题
字节对齐 讲解
赞0
评论
2020-11-04
赞1
2020-11-03
憨厚诚实大叔 发表于 2020-11-3 11:32 一般通讯或者数据存储读取的时候才会关注这个问题,基本都是做结构体指针操作时候才会用得上,结构体取消 ...
sxy4517 发表于 2020-11-3 10:13 怎么个取消方法
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
315个答案
天意无罪
284个答案
xch
206个答案
jjjyufan
197个答案
coody
186个答案
LcwSwust
142个答案
chunyang
135个答案
tpgf
110个答案
赞0
为什么是最大占用字节数为2字节?有人知道吗?
评论
2020-11-04
赞1
#pragma pack (1)
typedef struct{
int a;
char b;
double c;
char d[10];
}Test_TypeDef;
#pragma pack ()
#pragma pack (n) :n表示使用指定n个字节对齐。
#pragma pack ():取消自定字节对齐,恢复默认。
评论
2020-11-04
赞0
评论
2020-11-04
@sxy4517 :取变量,地址总线永远把低二位清零。可以看权威指南。
@zyj9490 :恩
总线永远取的四个字节,32位ARM,都是通过控制器运算得到非4倍数的变量。
如果02地址代表一个字节的变量,一次性从00取四个字节,控制器运算成字节变量,如果是半字,还是一样,如果是四字节,要分二次取,第一取从00,取四个字节,第二次从04取四个字节,最后拼成四个字节的变量。
赞0
评论
2020-11-04
赞0
评论
2020-11-03
赞0
恩,说得对。
评论
2020-11-03
赞0
评论
2020-11-03
赞0
评论
2020-11-03
赞0
一般通讯或者数据存储读取的时候才会关注这个问题,基本都是做结构体指针操作时候才会用得上,结构体取消字节对齐就好了。具体的搜索去
评论
2020-11-03
@sxy4517 :这个时候取消字节对齐,让他们在内存挨个排着就可以了,莫纠结。
恩,说得对。我就是在这两个地方遇到了这个问题。一个是往EEPROM存储数据的时候,一个是串口通信的时候。
您需要登录后才可以回复 登录 | 注册