C 语 言 预 处 理 命 令 之 条 件 编 译 ( #ifdef,#else,#endif,#if 等 ) 预 处 理 过 程 扫 描 源 代 码 , 对 其 进 行 初 步 的 转 换 , 产 生 新 的 源 代 码 提 供 给 编 译 器 。 可 见 预 处 理 过 程先 于 编 译 器 对 源 代 码 进 行 处 理 。 在 C语 言 中 , 并 没 有 任 何 内 在 的 机 制 来 完 成 如 下 一 些 功 能 : 在 编 译 时 包 含 其 他 源 文 件 、 定 义 宏 、根 据 条 件 决 定 编 译 时 是 否 包 含 某 些 代 码 。 要 完 成 这 些 工 作 , 就 需 要 使 用 预 处 理 程 序 。 尽 管 在 目 前绝 大 多 数 编 译 器 都 包 含 了 预 处 理 程 序 , 但 通 常 认 为 它 们 是 独 立 于 编 译 器 的 。 预 处 理 过 程 读 入 源 代码 , 检 查 包 含 预 处 理 指 令 的 语 句 和 宏 定 义 , 并 对 源 代 码 进 行 响 应 的 转 换 。 预 处 理 过 程 还 会 删 除 程序 中 的 注 释 和 多 余 的 空 白 字 符 。 预 处 理 指 令 是 以 #号开头的 代 码 行 。 #号必须是 该行 除 了 任 何 空 白 字 符 外的 第一 个字 符 。 #后是 指令 关键字 , 在 关键字 和 #号之 间允许存在 任 意个数 的 空 白 字 符 。 整行 语 句 构成 了 一 条 预 处 理 指 令 ,该指 令 将在 编 译 器 进 行 编 译 之 前 对 源 代 码 做某 些 转 换 。 下 面是 部分预 处 理 指 令 : 指 令 用 途 #空 指 令 , 无任 何 效果 #include包 含 一 个源 代 码 文 件 #define定 义 宏 #undef取消已定 义 的 宏 #if 如 果给 定 条 件 为 真, 则编 译 下 面代 码 #ifdef如 果宏 已经定 义 , 则编 译 下 面代 码 #ifndef如 果宏 没 有 定 义 , 则编 译 下 面代 码 #elif 如 果前 面的 #if 给 定 条 件 不为 真, 当前 条 件 为 真, 则编 译 下 面代 码 #endif结束一 个#if……#else 条 件 编 译 块 #error停止编 译 并 显示错误信息 一 、 文 件 包 含 #include预 处 理 指 令 的 ...