你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

KEIL编译器的问题

[复制链接]
linan4526 提问时间:2018-9-14 10:40 /
定义了一个结构体,但是分配的地址不连续,是KEIL的问题还是我的问题???????
keil问题.png
收藏 评论16 发布时间:2018-9-14 10:40

举报

16个回答
STM1024 回答时间:2018-9-14 21:11:55
本帖最后由 stm1024 于 2018-9-14 21:17 编辑

不用仔细看,就知道肯定是字节对齐的问题。
可以了解一下什么是字节对齐,以及为什么要做字节对齐。

你还可以搜索一下:#pragma pack(n)

另外,一点小小的建议:

碰到问题不要轻易怀疑是工具或者芯片出问题。

这些工具开发人员的水平,不知道比我们高到那里去了。

尤其是,你的问题在网上搜索,没几条结果的时候。


wenyangzeng 回答时间:2018-9-14 11:23:59
林楠春 发表于 2018-9-14 10:49
同一个结构体联合里面的这个就是连续的,总觉的是keil的BUG

字节对齐的问题,16位长度的变量不要与8位长度的变量交叉摆列。
七哥 回答时间:2018-9-14 11:40:24
以32位对齐、对齐、对齐
重要的事情说三遍

如果数据没对齐,需要自己凑齐。
https://www.stmcu.org.cn/module/ ... &fromuid=307297
linan4526 回答时间:2018-9-14 10:49:38
同一个结构体联合里面的这个就是连续的,总觉的是keil的BUG
keil问题1.png
linan4526 回答时间:2018-9-14 10:57:34
如果地址不连续,就不能用指针操作了,只能用结构体名,可文档写的可以访问啊
1.png
linan4526 回答时间:2018-9-14 11:41:58
发现只要将4字节长度的变量定义为2字节长度的,地址就会连续,这有些限制了软件开发了,还是我写的有问题?????

4字节 地址不连续

4字节  地址不连续

2字节 地址连续

2字节  地址连续
linan4526 回答时间:2018-9-14 11:45:32
对齐,好吧,只是要用指针操作缓冲区的话,就费劲了
疯de_恒 回答时间:2018-9-14 11:58:15
是结构体对齐的问题啊。C语言的东西,建议好好看看这部分。
tyhjrwx2011 回答时间:2018-9-14 13:03:36
基础知识学的不扎实
andey 回答时间:2018-9-14 13:59:55
提示: 作者被禁止或删除 内容自动屏蔽
andey 回答时间:2018-9-14 14:00:57
提示: 作者被禁止或删除 内容自动屏蔽
寻觅左岸 回答时间:2018-9-14 14:55:47
感觉是你的结构体里面内容,字节问题
linan4526 回答时间:2018-9-14 15:29:02
谢谢各位,做了修改了,并找到了说明
4.png
Johnson Cao 回答时间:2018-9-14 16:00:24
非常低级的一个数据对齐问题,上升到编译器问题,无语了.
Johnson Cao 回答时间:2018-9-14 16:01:30
最简单的判断就是程序启动后打印一下sizeof,看看是不是你想像的大小.
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版