1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 清华谭浩强编著的c语言程序设计教程 清华大学谭浩强C语言程序设计教程第3版 (9).doc...

清华谭浩强编著的c语言程序设计教程 清华大学谭浩强C语言程序设计教程第3版 (9).doc...

时间:2019-08-30 13:24:31

相关推荐

清华谭浩强编著的c语言程序设计教程 清华大学谭浩强C语言程序设计教程第3版 (9).doc...

TOC \o "1-3" \h \z 9 预 处 理 命 令 1

9 . 1 概 述 1

9 . 2 宏 定 义 1

9 . 2 . 1 无 参 宏 定 义 1

9 . 2 . 2 带 参 宏 定 义 4

9 . 3 文 件 包 含 8

9 . 4 条 件 编 译 9

9 . 5 本 章 小 结 11

预 处 理 命 令

概 述

在 前 面 各 章 中 , 已 多 次 使 用 过 以 “ # ” 号 开 头 的 预 处 理 命 令 。 如 包 含 命 令 # i n c l u d e , 宏 定 义 命 令 # d e f i n e 等 。 在 源 程 序 中 这 些 命 令 都 放 在 函 数 之 外 , 而 且 一 般 都 放 在 源 文 件 的 前 面 , 它 们 称 为 预 处 理 部 分 。

所 谓 预 处 理 是 指 在 进 行 编 译 的 第 一 遍 扫 描 ( 词 法 扫 描 和 语 法 分 析 ) 之 前 所 作 的 工 作 。 预 处 理 是 C 语 言 的 一 个 重 要 功 能 , 它 由 预 处 理 程 序 负 责 完 成 。 当 对 一 个 源 文 件 进 行 编 译 时 , 系 统 将 自 动 引 用 预 处 理 程 序 对 源 程 序 中 的 预 处 理 部 分 作 处 理 , 处 理 完 毕 自 动 进 入 对 源 程 序 的 编 译 。

C 语 言 提 供 了 多 种 预 处 理 功 能 , 如 宏 定 义 、 文 件 包 含 、 条 件 编 译 等 。 合 理 地 使 用 预 处 理 功 能 编 写 的 程 序 便 于 阅 读 、 修 改 、 移 植 和 调 试 , 也 有 利 于 模 块 化 程 序 设 计 。 本 章 介 绍 常 用 的 几 种 预 处 理 功 能 。

宏 定 义

在 C 语 言 源 程 序 中 允 许 用 一 个 标 识 符 来 表 示 一 个 字 符 串 , 称 为 “ 宏 ” 。 被 定 义 为 “ 宏 ” 的 标 识 符 称 为 “ 宏 名 ” 。 在 编 译 预 处 理 时 , 对 程 序 中 所 有 出 现 的 “ 宏 名 ” , 都 用 宏 定 义 中 的 字 符 串 去 代 换 , 这 称 为 “ 宏 代 换 ” 或 “ 宏 展 开 ” 。

宏 定 义 是 由 源 程 序 中 的 宏 定 义 命 令 完 成 的 。 宏 代 换 是 由 预 处 理 程 序 自 动 完 成 的 。

在 C 语 言 中 , “ 宏 ” 分 为 有 参 数 和 无 参 数 两 种 。 下 面 分 别 讨 论 这 两 种 “ 宏 ” 的 定 义 和 调 用 。

无 参 宏 定 义

无 参 宏 的 宏 名 后 不 带 参 数 。

其 定 义 的 一 般 形 式 为 :

# d e f i n e 标 识 符 字 符 串

其 中 的 “ # ” 表 示 这 是 一 条 预 处 理 命 令 。 凡 是 以 “ # ” 开 头 的 均 为 预 处 理 命 令 。 “ d e f i n e ” 为 宏 定 义 命 令 。 “ 标 识 符 ” 为 所 定 义 的 宏 名 。 “ 字 符 串 ” 可 以 是 常 数 、 表 达 式 、 格 式 串 等 。

在 前 面 介 绍 过 的 符 号 常 量 的 定 义 就 是 一 种 无 参 宏 定 义 。 此 外 , 常 对 程 序 中 反 复 使 用 的 表 达 式 进 行 宏 定 义 。

例 如 :

# d e f i n e M ( y * y + 3 * y )

它 的 作 用 是 指 定 标 识 符 M 来 代 替 表 达 式 ( y * y + 3 * y ) 。 在 编 写 源 程 序 时 , 所 有 的 ( y * y + 3 * y ) 都 可 由 M 代 替 , 而 对 源 程 序 作 编 译 时 , 将 先 由 预 处 理 程 序 进 行 宏 代 换 , 即 用 ( y * y + 3 * y ) 表 达 式 去 置 换 所 有 的 宏 名 M , 然 后 再 进 行 编 译 。

【 例 9 . 1 】

# d e f i n e M ( y * y + 3 * y )

m a i n ( ) {

i n t s , y ;

p r i n t f ( " i

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。