北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第五章 预处理命令

第五章预处理命令 本章的主要内容:三种预处理命令 ◆宏定义 ◆文件包含 ◆条件编译 回首页
本章的主要内容:三种预处理命令 宏定义 文件包含 条件编译 第五章 预处理命令 回首页

5.1宏定义 5.11简单宏定义(不带参数的宏定义) 命令形式: # define宏名字替代正文 对宏定义的处理:将宏名字替换(也叫宏展开)为替代正文,不作任何 语法检査。 书写习惯:用大写字母表示宏名字,以区别于普通变量名 讨论使用宏定义的好处。 宏定义的作用范围:C程序中,宏定义位置一般写在程序开头,从宏定义 开始处有效。如果要在源程序的某处提前终止宏定义的作用域,可以 使用# undef,形式如下: # undef宏名字 表示从该行开始,不再存在这个宏定义 宏定义的替代正文可以是任意的字符组合,预处理程序对它的处 理只是简单的展开和替换,结果是否正确,由编译程序来检査
5.1.1简单宏定义(不带参数的宏定义) 命令形式: #define 宏名字 替代正文 对宏定义的处理:将宏名字替换(也叫宏展开)为替代正文,不作任何 语法检查。 书写习惯:用大写字母表示宏名字,以区别于普通变量名。 讨论使用宏定义的好处。 宏定义的作用范围:C程序中,宏定义位置一般写在程序开头,从宏定义 开始处有效。如果要在源程序的某处提前终止宏定义的作用域,可以 使用#undef,形式如下: #undef 宏名字 表示从该行开始,不再存在这个宏定义。 宏定义的替代正文可以是任意的字符组合,预处理程序对它的处 理只是简单的展开和替换,结果是否正确,由编译程序来检查。 5.1 宏定义

5.1宏定义 5.1.2带参数的宏定义 命令形式 # define宏名字(参数表)替代正文 宏名字后紧跟括号,括号内是逗号分隔的几个标识符,被看作参数名字, 替代正文中应出现参数表中的参数 程序中使用带参数的宏类似于函数调用,称为“宏调用”,形式为: 宏名字(实参表 除了给出宏名字,还要给出各个宏参数的替代段,替代段之间也用逗号 分隔。 讨论使用宏调用和函数调用的特点。 预处理程序对带参宏定义的处理分两步: (1)用宏调用的实际参数替代出现在替代正文中的对应宏参数 (2)代换结果用到程序中出现宏调用的地方。 讨论在定义和使用宏调用时还应该注意的问题
5.1.2 带参数的宏定义 命令形式: #define 宏名字(参数表) 替代正文 宏名字后紧跟括号,括号内是逗号分隔的几个标识符,被看作参数名字, 替代正文中应出现参数表中的参数。 程序中使用带参数的宏类似于函数调用,称为“宏调用” ,形式为: 宏名字(实参表) 除了给出宏名字,还要给出各个宏参数的替代段,替代段之间也用逗号 分隔。 讨论使用宏调用和函数调用的特点。 预处理程序对带参宏定义的处理分两步: (1)用宏调用的实际参数替代出现在替代正文中的对应宏参数。 (2)代换结果用到程序中出现宏调用的地方。 讨论在定义和使用宏调用时还应该注意的问题。 5.1 宏定义

5.2文件包含 用# include开始的预处理命令叫文件包含命令。由于该命令写在 所有的源文件的开头,又叫头文件,常用“.h”做后缀,(没 有后缀或用“c”做后缀也可以)。 包含命令的形式如下: # include中,表示到指定目录中寻找文件,常用于包含系统 提供的头文件。文件名放在””中,则先到当前工作目录中 找文件,再到指定目录中找,常用于包含自己提供的头文件 预处理程序对包含命令的处理过程:按规定方法寻找文件,若找 到,用文件内容替换包含命令所在的行。找不到,预编译出错, 提示无法打开相应文件。 包含文件可以嵌套,预处理程序会将其全部展开,直到不包含 个预处理命令为止。替换的文件是文本文件即可,但替换后要 满足C程序语法规定。 讨论使用包含命令应注意的问题
用#include开始的预处理命令叫文件包含命令。由于该命令写在 所有的源文件的开头,又叫头文件,常用“.h”做后缀,(没 有后缀或用“ c”做后缀也可以)。 包含命令的形式如下: #include 或: #include “文件名” 文件名放在<>中,表示到指定目录中寻找文件,常用于包含系统 提供的头文件。文件名放在” ”中,则先到当前工作目录中 找文件,再到指定目录中找,常用于包含自己提供的头文件。 预处理程序对包含命令的处理过程:按规定方法寻找文件,若找 到,用文件内容替换包含命令所在的行。找不到,预编译出错, 提示无法打开相应文件。 包含文件可以嵌套,预处理程序会将其全部展开,直到不包含一 个预处理命令为止。替换的文件是文本文件即可,但替换后要 满足C程序语法规定。 讨论使用包含命令应注意的问题。 5.2 文件包含

5.3条件编译 条件编译:控制程序中的某些行只在满足一定条件下才进行编译, 或控制满足某一条件时对一组语句进行编译,不满足这一条件 时编译另一组语句,的预处理命令 它的作用是划出源程序的一些片段,使预处理程序可以根据一定 条件确定保留或丢掉某个片段,或确定从几个片段中选取哪 个片段保留下来。 讨论条件编译的处理过程及使用注意问题。 形式1.# ifdef标识符 程序段1 程序段2 #endif 根据标识符是否由用# define命令定义过,选择保留程序段1或程 序段2
条件编译:控制程序中的某些行只在满足一定条件下才进行编译, 或控制满足某一条件时对一组语句进行编译,不满足这一条件 时编译另一组语句,的预处理命令。 它的作用是划出源程序的一些片段,使预处理程序可以根据一定 条件确定保留或丢掉某个片段,或确定从几个片段中选取哪一 个片段保留下来。 讨论条件编译的处理过程及使用注意问题。 形式1. #ifdef 标识符 程序段1 #else 程序段2 #endif 根据标识符是否由用#define命令定义过,选择保留程序段1或程 序段2。 5.3 条件编译

5.3条件编译 形式2.#if表达式 程序段1 #else 程序段2 #endif 根据表达式值是否为真,选择保留程序段1还是程序段2。 形式3.#if表达式1 程序段1 #elif表达式2 程序段2 #elif表达式3 #else 程序段n #endif 根据多个表达式值,从若干程序段中选取一段
形式2. #if 表达式 程序段1 #else 程序段2 #endif 根据表达式值是否为真,选择保留程序段1还是程序段2。 形式3.#if 表达式1 程序段1 #elif 表达式2 程序段2 #elif 表达式3 ··· #else 程序段n #endif 根据多个表达式值,从若干程序段中选取一段。 5.3 条件编译

第五章预处理命令 本章内容不多,但很实用,出现的预处理命令有: define, include, if, elif, else, endif, ifdef, idndefo 本章主要知识点: ●宏定义的作用,代参宏定义的定义方法,宏调用和函数调用的区别, ●宏展开的方法 包含命令在多文件程序中的使用,常用头文件及相关函数的使用。 ◆条件编译的几种实现方法,如何使用控制条件编译的宏定义。 回本章首页
第五章 预处理命令 本章内容不多,但很实用,出现的预处理命令有:define,include, if,elif,else,endif, ifdef,idndef。 本章主要知识点: 宏定义的作用,代参宏定义的定义方法,宏调用和函数调用的区别, 宏展开的方法。 包含命令在多文件程序中的使用,常用头文件及相关函数的使用。 条件编译的几种实现方法,如何使用控制条件编译的宏定义。 回本章首页
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第四章 函数和程序结构.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第三章 语句及控制结构.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第七章 指针.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第六章 数组.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第九章 文件.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第二章 数据类型、运算符与表达式.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第八章 结构及其它.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)目录(崔雅娟).ppt
- 《操作系统原理》课程教学资源:教学大纲标准格式.doc
- 《操作系统原理》课程教学资源(PPT课件讲稿)第六章 作业管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第十章 Linux设备管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第九章 设备管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第八章 Linux文件管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第七章 文件管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第6章 Linux存储管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第4章 存储管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第4章 Linux进程管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)第3章 进程管理.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)Linux核心体系结构简介.ppt
- 《操作系统原理》课程教学资源(PPT课件讲稿)(英文版)Linux Development Environment.ppt
- 北京语言文化大学:《C语言程序设计导论》课程教学资源(PPT课件)第一章 程序设计概述.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第一章 插值方法.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第二章 贝齐尔曲线和B样条曲线.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第三章 数值积分.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第四章 线性代数方程组的解法.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第五章 线性规划.ppt
- 高等学校计算机专业教材:《数值计算方法》课程教学资源(PPT课件)第六章 常微分方程数值解法.ppt
- MATLAB简介.doc
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第1章 数据结构基础概论.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第2章 线性表.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第3章 栈和队列.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第4章 串和数组.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第5章 树和二叉树.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第6章 图.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第7章 查找.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第8章 排序.ppt
- 人民邮电出版社:高职高专现代信息技术系列教材《数据结构》课程电子教案(PPT课件讲稿)第9章 文件.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿,第二版)第一章 电子商务概述(宋文官).ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿,第二版)第三章 EDI商务.ppt
- 《电子商务实用教程》课程教学资源(PPT课件讲稿,第二版)第四章 企业电子商务应用.ppt