#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图1#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图2#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图3在编译期间 根据是否定义了某一个编译常量 决定一段代码是否要编译

语 法

#IFDEF |#IFNDEF ConstantName Commands

[#ELSE

Commands ] #ENDIF

参 数 描 述

#IFDEF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图4#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图5如 果 已 定 义 由 ConstantName 指 定 的 编 译 常 量 则 编 译 一 段 程 序 代 码

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图6下面描述如何根据 #IFDEF 预处理器命令确定要编译的程序代码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图7

    果 定 义 了 ConstantName 则 要 编 译 从 #IFDEF 到 #ELSE 或 者 #ENDIF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图8#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图9取 决 于 哪 个 在 前 面 #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图10 之 间 的 程 序 代 码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图11#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图12

    果 没 有 定 义 ConstantName 但 有 #ELSE 命 令 则 编 译 #ELSE 到 #ENDIF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图13之 间 的 程 序 代 码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图14#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图15

    果 没 有 定 义 ConstantName 也 没 有 #ELSE 命 令 则 #IFDEF #ENDIF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图16结 构 中 的 所 有 程 序 都 不 编 译

#IFNDEF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图17#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图18当 没 有 定 义 ConstantName 指 定 的 编 译 常 量 时 指 定 要 编 译 的 一 组 程 序 代码

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图19下面描述如何根据 #IFNDEF 预处理器命令决定要编译的程序代码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图20#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图21#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图22

    果 没 有 定 义 ConstantName 则 编 译 #IFNDEF 到 #ELSE 或 者 #ENDIF 取决 于 哪 个 在 前 面 #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图23 之 间 的 程 序 代 码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图24#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图25

    果 已 经 定 义 了 ConstantName 并 且 有 #ELSE 命 令 则 编 译 #ELSE 到

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图26#ENDIF 之 间 的 程 序 代 码

  • #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图27#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图28

    果 定 义 了 ConstantName 但 没 有 #ELSE 命 令 则 #IFNDEF #ENDIF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图29结 构 中 的 所 有 程 序 都 不 编 译

ConstantName

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图30#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图31指 定 编 译 期 间 所 用 的 常 量 编 译 常 量 由 #DEFINE 命 令 定 义

Commands

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图32指 定 要 编 译 的 程 序 代 码

说 明

一个 #IFDEF |#IFNDEF ......#ENDIF 结构可以嵌套另一 个#IFDEF |#IFNDEF #ENDIF

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图33结构

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图34#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图35#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图36#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图37注释可以放在 #IFDEF #IFNDEF #ELSE 和 #ENDIF 所在行的后面 这些注释在编译和程序运行期间将被忽略

示 例

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图38#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图39#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图40下面的示例创建了一个名称为 MYDEFINE 的编译时期常量 如果编译时期常量已经定义 #IFDEF ......#ENDIF 会显示信息

#DEFINE MYDEFINE 1

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图41#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图42 #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图43 #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图44 #IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图45 MYDEFINE

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图46#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图47#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图48#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图49WAIT WINDOW "MYDEFINE exists"

WAIT WINDOW "MYDEFINE does not exist"

#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图50#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图51#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图52#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图53#IFDEF|#IFNDEF ......#ENDIF 预 处 理 器 命 令 - 图54

请 参 阅

COMPILE ,# DEFINE ......#UNDEF ,# IF ......#ENDIF ,# INCLUDE