12.07.2015 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C 和 C++ 实 现 细 节然 而 , 如 果 使 用 -cpp 和 --c90 选 项 编 译 C 或 C++, 则 会 生 成 错 误 。压 缩 结 构压 缩 结 构 是 一 种 结 构 对 齐 边 界 和 内 部 字 段 对 齐 边 界 始 终 为 1 的 结 构 。可 以 使 用 __packed 限 定 符 压 缩 特 定 结 构 。 或 者 , 也 可 以 使 用 #pragma pack(n) 确 保压 缩 任 何 包 含 未 对 齐 数 据 的 结 构 。 无 法 使 用 命 令 行 选 项 更 改 结 构 的 缺 省 压 缩 方式 。位 域在 非 压 缩 结 构 中 , <strong>ARM</strong> 编 译 器 在 容 器 中 分 配 位 域 。 容 器 是 已 声 明 类 型 的 正 确对 齐 的 对 象 。分 配 位 域 时 , 应 确 保 指 定 的 第 一 个 字 段 占 用 字 的 最 低 地 址 位 , 具 体 取 决 于 配置 :小 端 最 低 地 址 为 最 低 有 效 位 。大 端 最 低 地 址 为 最 高 有 效 位 。位 域 容 器 可 以 是 任 何 整 型 。注 意在 严 格 1990 ISO 标 准 C 中 , 只 允 许 将 int、 signed int 和 unsigned int 类 型 用 于位 域 。 对 于 非 int 位 域 , 编 译 器 会 显 示 错 误 。没 有 使 用 signed 或 unsigned 限 定 符 声 明 的 普 通 位 域 按 unsigned 处 理 。 例 如 ,intx:10 分 配 10 位 无 符 号 整 数 。位 域 将 分 配 给 第 一 个 具 有 足 够 未 分 配 位 数 的 正 确 类 型 的 容 器 , 例 如 :struct X{int x:10;int y:20;};第 一 个 声 明 创 建 一 个 整 数 容 器 , 并 为 x 分 配 10 位 。 在 第 二 个 声 明 中 , 编 译 器 查找 具 有 足 够 未 分 配 位 数 的 现 有 整 数 容 器 , 并 在 与 x 相 同 的 容 器 中 分 配 y。位 域 完 全 包 含 在 其 容 器 中 。 如 果 无 法 将 位 域 放 入 某 个 容 器 中 , 则 会 将 其 放 在 下一 个 相 同 类 型 的 容 器 中 。 例 如 , 如 果 为 结 构 声 明 了 其 他 位 域 , z 声 明 将 溢 出 容器 :5-10 Copyright © 2007-2009 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0348BCNon-Confidential, Unrestricted AccessID090708

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

Saved successfully!

Ooh no, something went wrong!