打印
[STM32]

请问编译器会自动优化变量的对齐问题吗?

[复制链接]
1036|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Atom2004|  楼主 | 2017-11-2 13:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
aozima| | 2017-11-2 16:12 | 只看该作者
可能会,甚至丢弃末引用的变量,但不可预测,不同的编译,不同的优化等级,甚至同样的编译器不同的版本,行为也可能完全不一样。
对于普通变量,用户不必理会。

使用特权

评论回复
板凳
Atom2004|  楼主 | 2017-11-6 11:41 | 只看该作者
aozima 发表于 2017-11-2 16:12
可能会,甚至丢弃末引用的变量,但不可预测,不同的编译,不同的优化等级,甚至同样的编译器不同的版本,行 ...

你指的普通变量是指怎么样的变量呢?

使用特权

评论回复
地板
airwill| | 2017-11-8 22:37 | 只看该作者
至少到目前位置, 我还没有发现编译器自动调整存储位置的能力.
不妨可以编译试试. 用生成的 MAP 文件验证就是了

使用特权

评论回复
5
john_lee| | 2017-11-9 10:28 | 只看该作者
本帖最后由 john_lee 于 2017-11-9 10:30 编辑

原则上可以,而且也应该这样做,但还是要看编译器。
程序里不能假设某个变量与其它变量有固定的位置关系和顺序关系(聚集类型的内部变量之间是有顺序关系的)。

使用特权

评论回复
6
msblast| | 2017-11-9 10:31 | 只看该作者
pack
align

使用特权

评论回复
7
Atom2004|  楼主 | 2017-12-1 11:08 | 只看该作者
Atom2004 发表于 2017-11-6 11:41
你指的普通变量是指怎么样的变量呢?

就是像上面描述那样子定义的变量,用int32_t定义的局部或者全局标量。

使用特权

评论回复
8
Atom2004|  楼主 | 2017-12-1 11:10 | 只看该作者

align的属性应该是指定该变量按照指定的对齐宽度进行对齐吧?和变量间的顺序应该没有关系的吧?

另外请教一下pack是什么含义啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

85

帖子

0

粉丝