附 录 B 条 件 编 译

附 录 B 条 件 编 译 - 图1附 录 B 条 件 编 译 - 图2附 录 B 条 件 编 译 - 图3附 录 B 条 件 编 译 - 图4附 录 B 条 件 编 译 - 图5附 录 B 条 件 编 译 - 图6附 录 B 条 件 编 译 - 图7附 录 B 条 件 编 译 - 图8V isu a l J + + 提 供 两 个 用 来 在 Ja va 中 条 件 编 译 代 码 的 新 机 制 条 件 伪 指 令和 条 件 方 法 下 表 描 述 了 所 有 这 些 可 用 的 条 件 伪 指 令 要 了 解 一 般 的 情况 见 条 件 伪 指 令 一 节 要 了 解 句 法 的 描 述 和 条 件 方 法 的 使 用 见

附 录 B 条 件 编 译 - 图9附 录 B 条 件 编 译 - 图10附 录 B 条 件 编 译 - 图11附 录 B 条 件 编 译 - 图12条 件 方 法 一 节 这 两 节 都 在 本 附 录 的 后 面

附 录 B 条 件 编 译 - 图13附 录 B 条 件 编 译 - 图14附 录 B 条 件 编 译 - 图15附 录 B 条 件 编 译 - 图16注 意 由 Visual J++ 提 供 的 条 件 伪 指 令 和 条 件 方 法 机 制 是 扩 充 到 由Microsoft 提 供 的 Java 语 言 中 的 因 此 包 含 这 些 机 制 的 源 代 码 在使 用 其 他 Java 开 发 工 具 时 不 能 适 当 编 译

条 件 伪 指 令 说 明

附 录 B 条 件 编 译 - 图17# if 条件 包含 或排除 源 代 码 取 决 于 它 的 表达式 或 标 识符的 结果值

附 录 B 条 件 编 译 - 图18附 录 B 条 件 编 译 - 图19附 录 B 条 件 编 译 - 图20#e lif 用于 # if 伪指 令 的 可选项 如 果前面 的 # if 测试 失败 #e lif 包含 或排 除源代 码 这取决 于它 自己 的表达 式 或 标识符 的结果 值

附 录 B 条 件 编 译 - 图21附 录 B 条 件 编 译 - 图22#e ls e 用于 # if 伪指 令的 可选项 如 果前面 的 # if 测试 失败 跟随

#e ls e 伪指 令的 源代码 将被 包含

附 录 B 条 件 编 译 - 图23#e nd if 使用 # if 伪指 令所 需要的 #e nd if 伪指 令关 闭一个 代码 的条件区

#d e fin e 定义 预处 理中的 标识 符

#u nde f 取消 预处 理中标 识符 的定义

# e rro r 生成 开发 者定义 的编 译时的 错误信 息

#w a rn ing 生成 开发 者定义 的编 译时的 警告信 息

附 录 B 条 件 编 译 - 图24附 录 B 条 件 编 译 - 图25附 录 B 条 件 编 译 - 图26# if #e lif #e lif #e ls e 和 #e n d if 条 件 伪 指 令

附 录 B 条 件 编 译 - 图27附 录 B 条 件 编 译 - 图28附 录 B 条 件 编 译 - 图29附 录 B 条 件 编 译 - 图30附 录 B 条 件 编 译 - 图31附 录 B 条 件 编 译 - 图32附 录 B 条 件 编 译 - 图33# if #e l if #e l if #e lse 和 #e nd if 伪 指 令 共 同 使 用 用 来 进 行 条 件 包 含 或排 除 源 文 件 编 译 的 源 代 码 行 开 始 所 有 的 条 件 区 的 # if 伪 指 令 必 须 有 一个 关 闭 条 件 区 的 #e nd if 伪 指 令 相 匹 配

附 录 B 条 件 编 译 - 图34语 法

# if < 表 达 式 >

包 含 的 代 码 # e lif < 表 达 式 >包 含 的 代 码

#e lse

包 含 的 代 码

# e nd if

附 录 B 条 件 编 译 - 图35附 录 B 条 件 编 译 - 图36附 录 B 条 件 编 译 - 图37附 录 B 条 件 编 译 - 图38附 录 B 条 件 编 译 - 图39附 录 B 条 件 编 译 - 图40附 录 B 条 件 编 译 - 图41跟 随 在 # if 和 #e l if 伪 代 码 后 面 的 表 达 式 必 须 是 一 个 有 效 的 布 尔 表 达 式 由布 尔 运 算 符 组 成 并 且 使 用 #de f ine 和 #unde f 编 译 器 伪 指 令 声 明 的 标 识符 如 果 跟 在 # if 伪 指 令 后 面 的 表 达 式 值 为 真 紧 接 在 该 伪 指 令 后 面 的 行将 保 留 在 源 文 件 中 如 果 该 表 达 式 的 值 为 假 则 在 该 伪 指 令 后 到 #e l if

附 录 B 条 件 编 译 - 图42#e lse 或 #e nd if 之 前 的 行 将 从 源 文 件 中 排 除

附 录 B 条 件 编 译 - 图43附 录 B 条 件 编 译 - 图44附 录 B 条 件 编 译 - 图45在 一 个 条 件 区 中 只 能 包 含 一 个 #e lse 伪 指 令 只 有 当 与 之 相 对 应 的 # if 伪指 令 值 为 假 时 跟 随 在 #e lse 伪 指 令 后 面 的 行 才 在 源 文 件 中 保 留

附 录 B 条 件 编 译 - 图46附 录 B 条 件 编 译 - 图47附 录 B 条 件 编 译 - 图48附 录 B 条 件 编 译 - 图49附 录 B 条 件 编 译 - 图50附 录 B 条 件 编 译 - 图51在 一 个 代 码 的 条 件 区 中 可 能 不 包 含 或 包 含 多 个 #e lse 伪 指 令 #e l if 伪 指 令是 e ls e if 的 缩 写 用 于 当 # if 伪 指 令 已 经 被 赋 值 并 且 该 值 为 假 时 其随 后 表 达 式 的 赋 值

附 录 B 条 件 编 译 - 图52附 录 B 条 件 编 译 - 图53附 录 B 条 件 编 译 - 图54附 录 B 条 件 编 译 - 图55附 录 B 条 件 编 译 - 图56附 录 B 条 件 编 译 - 图57附 录 B 条 件 编 译 - 图58用 于 条 件 编 译 中 的 表 达 式 与 用 于 Ja va 语 言 中 的 表 达 式 有 着 同 样 的 限 制 和行 为 例 如 所 有 Ja va 定 义 的 布 尔 和 位 运 算 符 都 被 接 受 并 且 运 算 符 的优 先 级 是 同 等 的 此 外 Ja va 语 言 还 定 义 括 号 用 来 强 制 改 变 赋 值 的 顺 序下 面 是 用 来 说 明 每 一 个 条 件 伪 指 令 的 例 子

#de f ine D E B U G

# u ndef R E T A IL

p u b lic c la ss te s t {

# if D E B U G

if ( cm d S tatu s .eq u als( invo ke E r ro r ) )

{

/ / T h e fo llo w ing line disp la ys a dia gnostic m essage: S y s tem .o u t .p r intln (" E r ro r : co m m and t im ed out." ) ;

/ / a p p ro p r ia te a c t io n s

/ / ta k en h ere

}

# elif R E T A IL

if ( cm d S tatu s .eq u als( invo ke E r ro r ) )

{

/ / a p p ro p r ia te a c t io n s

/ / ta k en h ere

}

# e ls e

# erro r M u st define D E B U G or R E T A IL ; # endif

}

#d e f in e 条 件 伪 指 令

附 录 B 条 件 编 译 - 图59附 录 B 条 件 编 译 - 图60附 录 B 条 件 编 译 - 图61附 录 B 条 件 编 译 - 图62附 录 B 条 件 编 译 - 图63#de f ine 伪 指 令 用 来 将 一 个 条 件 标 识 符 包 含 到 源 文 件 中 当 定 义 标 识 符时 该 标 识 符 能 够 用 在 该 源 文 件 所 包 含 的 所 有 类 中 这 个 伪 指 令 必 须 放在 源 文 件 的 开 始 在 它 的 前 面 只 能 有 注 释 和 其 他 的 条 件 编 译 伪 指 令

附 录 B 条 件 编 译 - 图64附 录 B 条 件 编 译 - 图65根 据 规 定 被 #de f ine 伪 指 令 定 义 的 标 识 符 的 值 将 总 是 为 真语 法

#D E F IN D < 标 识 符 >

附 录 B 条 件 编 译 - 图66附 录 B 条 件 编 译 - 图67附 录 B 条 件 编 译 - 图68附 录 B 条 件 编 译 - 图69在 上 面 显 示 的 标 识 符 长 度 最 长 可 为 1024 字 符 根 据 规 定 标 识 符 由 大 写字 符 组 成 用 来 说 明 它 们 的 用 途

附 录 B 条 件 编 译 - 图70下 面 的 例 子 用 来 说 明 #de f ine 伪 指 令 在 Ja va 应 用 程 序 中 的 用 途