12.07.2015 Views

RealView 编译工具编译器参考指南 - ARM Information Center

RealView 编译工具编译器参考指南 - ARM Information Center

RealView 编译工具编译器参考指南 - ARM Information Center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C 和 C++ 实 现 细 节字 段 对 齐结 构 的 排 列 方 式 为 : 将 第 一 个 已 命 名 组 件 放 在 最 低 地 址 中 。 字 段按 以 下 方 式 进 行 对 齐 :• char 类 型 的 字 段 与 下 一 个 可 用 字 节 对 齐 。• short 类 型 的 字 段 与 下 一 个 偶 数 地 址 的 字 节 对 齐 。• 在 RVCT 2.0 和 更 高 版 本 中 ,double 和 long long 数 据 类 型 为 8字 节 对 齐 。 这 样 , 便 可 有 效 地 使 用 <strong>ARM</strong>v5TE 和 更 高 版 本 中的 LDRD 和 STRD 指 令 。• 位 域 对 齐 取 决 于 位 域 的 声 明 方 式 。 有 关 详 细 信 息 , 请 参 阅第 5-12 页 的 压 缩 结 构 中 的 位 域 。• 所 有 其 他 类 型 按 字 边 界 对 齐 。结 构 可 以 包 含 填 充 以 确 保 正 确 对 齐 字 段 以 及 结 构 本 身 。 图 5-1 是 一 个 常 规 非 压缩 结 构 的 示 例 。 它 填 充 了 第 1、 第 2 和 第 3 个 字 节 以 确 保 正 确 对 齐 字 段 。 它 还 填充 了 第 11 和 第 12 个 字 节 以 确 保 正 确 对 齐 结 构 。 sizeof() 函 数 返 回 结 构 大 小( 包 括 填 充 )。struct {char c; int x; short s} ex1;0 1 2 3cspadding4 5 7 8x9 10 11 12padding根 据 结 构 的 定 义 方 式 , 编 译 器 使 用 以 下 方 式 之 一 填 充 结 构 :• 用 零 填 充 定 义 为 static 或 extern 的 结 构 。图 5-1 常 规 非 压 缩 结 构 示 例• 使 用 以 前 存 储 在 堆 栈 或 堆 中 的 任 何 内 容 填 充 这 些 内 存 位 置 上 的 结 构 , 例如 , 使 用 malloc() 或 auto 定 义 的 结 构 。 不 能 使 用 memcmp() 比 较 以 这 种 方 式定 义 的 填 充 结 构 ( 请 参 阅 图 5-1)。可 以 使 用 --remarks 选 项 查 看 编 译 器 在 struct 中 插 入 填 充 时 生 成 的 消 息 。C++ 中 允 许 使 用 带 有 空 初 始 值 设 定 项 的 结 构 :struct{int x;} X = { };<strong>ARM</strong> DUI 0348BC Copyright © 2007-2009 <strong>ARM</strong> Limited. All rights reserved. 5-9ID090708Non-Confidential, Unrestricted Access

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!