如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
课题:第九章预处理命令教学目的及要求:了解预处理命令的作用;了解宏定义和文件包含处理的使用。教学重点:宏定义、文件包含的形式和使用;宏定义和函数调用的区别。教学难点:宏定义、文件包含的形式和使用;宏定义和函数调用的区别。教学步骤及内容:第九章预处理命令作用:改进程序设计环境,提高编程效率。预处理命令是由ANSIC统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译,必须在对程序进行通常的编译之前,先对程序中这些特殊命令进行“预处理”,即根据预处理命令对程序作相应的处理。经处理后程序不再包括预处理命令,再由编译程序对预处理后的源程序进行编译处理,得到可执行的目标代码。C提供的预处理功能主要有以下三种:1、宏定义2、文件包含3、条件编译为了与一般的C语句相区别,这些命令以符号“#”开头。9.1宏定义一、不带参数的宏定义用一个指定的标识符来代表一个字符串。其一般形式如下:#define标识符字符串宏展开:在编译时,将宏名替换成字符串的过程。说明:1)宏名一般习惯用大写字母表示,以便与变量名相区别。2)使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。旁批栏:3)宏定义是用宏名代替一个字符串,即做简单的置换,不作正确性检查。4)宏定义不是C语句,不必在行末加分号。5)#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。6)可以用#undef命令终止宏定义的作用域。7)在进行宏定义时,可以引用已定义的宏名,可以层层置换。8)对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行置换。9)宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。二、带参数的宏定义不进行简单的字符串替换,还要进行参数替换。其一般形式如下:#define宏名(参数)字符串说明:1)对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替#define命令行中的形参。2)在宏定义时,在宏名与带参数的括弧之间不应加空格,否则将空格以后的字符都视为替代字符串的一部分。函数调用与带参宏定义之间的区别1)函数调用时,先求出实参表达式的值,再代入形参;而带参的宏只进行简单的字符替换。2)函数调用是在程序运行时处理的,分配临时的内存单元;宏展开是在编译时进行的,在展开时并不根本内存单元,不进行值的传递,也没有“返回值”。3)对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题。4)调用函数只可得到一个返回值,而用宏可以得到多个结果。5)多次使用宏会使源程序增长。6)宏替换不占运行时间,只占编译时间。9.2“文件包含”处理“文件包含”指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。一般形式:#include“文件名”或#include<文件名>9.3条件编译通常,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也即对一部分内容指定编译的条件,即“条件编译”。旁批栏: