• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

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

liguilini 2017-12-12 浏览量:778

例如下面这样的代码。

uint32_t a;

uint8_t b;

uint32_t c;

uint8_t d

对于32位芯片,应该是需要4字节对齐的。那按常理这4个变量应该占用了13个字节了。

请问在keil里面进行编译的时候,编译器是否会将这几个变量优化成 a,c,b,d 这样排列呢?这样子就只需要占用10字节了。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • keil会自动对齐的,你看看map文件就知道了
    • 发布于 2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :尾缀219的非原厂标准型号,219具体含义资料没有说明 回复

其他答案 数量:4
电子老工程师 回复了  :从规格书文件确认,确实有带螺母配件产品。 回复

  • 不会自动排列占用10字节的,如果你想让他们只占用10字节。可以先放进结构体,然后用 __packed 关键字修饰,就会只占用10自己空间。

    __packed是以字节对齐。

    __align(4)是以字对齐。

    • 发布于2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :没有ROHS报告,有reach报告 回复

  • 应该是不会自动优化的,除非你手动修改顺序

    • 发布于2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :同一物料,V23132B2002A200是别名 回复

  • 不会的,据说变量自动对齐是特定IDE才有的功能。

    • 发布于2017-12-14
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :IKW20N60TFKSA1(连续集电极电路为41A) 回复

相关问题

问题达人换一批

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