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.

语 言 扩 展extern int *const cp = (int*)0x100; /* ok ok */extern int *const xp = cp + 0x100; /* error ext */static int * yp = cp + 0x100; /* error ext */static int *const zp = cp + 0x100; /* error ext */这 指 示 由 ISO C 标 准 Std 定 义 的 行 为 以 及 RVCT 中 的 行 为 :• ok 表 明 在 所 有 C 模 式 下 均 接 受 该 语 句 。• ext 是 ISO C 标 准 的 扩 展 。 此 行 为 取 决 于 编 译 C 时 使 用 的 strict 模 式 :非 严 格接 受 , 不 会 发 出 警 告 。--strict_warnings接 受 , 但 会 发 出 警 告 。--strict符 合 ISO C 标 准 , 但 会 生 成 错 误 。另 请 参 阅• 第 2-55 页 的 --extended_initializers,--no_extended_initializers• 第 2-116 页 的 --strict, --no_strict• 第 2-117 页 的 --strict_warnings3.4.2 数 组 和 指 针 扩 展支 持 以 下 数 组 和 指 针 扩 展 :• 对 于 可 互 换 但 不 完 全 相 同 的 类 型 , 允 许 指 针 之 间 存 在 分 配 和 指 针 差 别 , 例如 , unsigned char * 和 char *。 这 包 括 指 向 相 同 大 小 的 整 型 的 指 针 , 通 常为 int * 和 long *。 将 发 出 警 告 。允 许 将 字 符 串 常 数 分 配 给 指 向 任 何 类 型 字 符 的 指 针 , 而 不 会 发 出 警 告 。• 如 果 目 标 类 型 添 加 了 非 顶 级 的 类 型 限 定 符 , 则 允 许 分 配 指 针 类 型 ; 例 如 ,将 int ** 分 配 给 const int **。 这 些 指 针 类 型 对 也 允 许 存 在 比 较 和 指 针 差别 。 将 发 出 警 告 。• 在 指 针 运 算 中 , 如 果 需 要 , 则 始 终 将 指 向 void 的 指 针 隐 式 转 换 为 其 他 类型 。 同 样 , 如 果 需 要 , 始 终 将 空 指 针 常 数 隐 式 转 换 为 正 确 类 型 的 空 指 针 。在 ISO C 中 , 某 些 运 算 符 允 许 这 样 转 换 , 而 其 他 运 算 符 不 允 许 。3-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!