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