C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt

C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt

ID:50083573

大小:1.09 MB

页数:17页

时间:2020-03-08

C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt_第1页
C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt_第2页
C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt_第3页
C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt_第4页
C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt_第5页
资源描述:

《C语言程序设计 教学课件 作者 易晓梅 赵芸 第7章 预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章编译预处理C语言程序设计本章要点宏定义概述文件包含的定义与操作条件编译的定义与操作本章学习目标掌握带参数宏定义使用掌握不带参数宏定义使用了解文件包含了解条件编译第7章编译预处理在C语言程序中,还可以使用编译预处理命令。其作用不是实现程序的功能,而是向编译系统发布信息或命令,指示编译系统在对源程序进行编译之前应做些什么。特点:特殊的命令。C编译系统先对程序中的特殊的命令进行“预处理”。所有编译预处理语句都以“#”开头,每个预处理语句必须单独占一行,语句末尾不使用分号作为结束符。一般将编译预处理语句放在源程序的首部。预

2、处理语句主要有:宏文件包含条件编译编译预处理——宏定义(续)无参宏定义:#define标识符字符串(定义符号常量)宏名说明:宏名一般习惯上用大写字母表示。宏定义是用宏名代替一个字符串,只作简单的置换,不作语法检查。#define命令出现在程序中所有函数的外面,宏名的有效范围为定义命令之后到源文件结束,但可#undef命令终止宏定义的作用域。例9.1例#definePI3.1415926main(){floatl,s,r,v;printf("inputradius:");scanf("%f",&r);l=2.0*PI*

3、r;s=PI*r*r;v=4.0/3*PI*r*r*r;printf("l=%10.4fs=%10.4fv=%10.4f",l,s,v);}说明:宏名一般用大写。行尾不加“;”有效范围:定义之后到文件结束。“”之内的宏名无效。编译时标识符替换成字符串,——宏替换有参宏定义#define宏名(参数表)字符串例1:#definePOWER(X)X*X在程序中使用时:z=POWER(x+y);编译时替换为:z=x+y*x+y;(运算顺序不对)例2::#definePOWER(X)(X)*(X)在程序中使用时:z=P

4、OWER(x+y);编译时替换为:z=(x+y)*(x+y);编译预处理——宏定义(续)在宏名与参数的括弧之间不应加空格说明P188-190参数表是形式参数,宏替换时由实际参数代替。例9.3例8.3#definePI3.1415#defineS(r)PI*r*rmain(){…a=3.6;area=s(a);…}宏展开后area=3.1415*a*a;注意:宏替换——简单替换若r参数为表达式s(a+b)area=PI*a+b*a+b重新定义S(r)例#definePI3.1415#defineS(r)PI*(r)*(r)

5、main(){…a=3.6;area=s(a);…}带参宏与函数的区别函数调用时先求实参的值,其值带入形参。带参宏只进行简单替换,不求值。函数调用是在程序运行时处理。宏展开是在编译时进行,不分配内存单元,不进行“值”传递,无返回值。函数中实参和形参个数相等、类型一致、顺序对应宏不存在类型,只是一个符号代表。带参宏与函数的区别例定义#definePI3.14159#defineCIRCLE(R,L,S,V)L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R;程序中CIRCLE(r,l,s,v);若r=3.5l

6、=2*3.14159*3.5s=3.14159*3.5*3.5v=4.0/3.0*3.14159*3.5#include<包含文件名>编译系统直接到指定的标准包含文件目录(通常是c:tc30include)搜索包含文件。#include“包含文件路径名"编译系统按指定路径搜索。未指定路径名时,首先在当前目录中搜索, 找不到时,再按系统设定的标准目录搜索包含文件。编译预处理——文件包含编译预处理——文件包含(续)文件包含预处理的功能:在对源程序进行编译之前,用包含文件的内容取代该文件的包含预处理语句。能够用作包含文件的

7、,并不限于C语言系统提供的头文件,还可以是用户自己写的命令文件(其中包括宏、结构体名、共用体名、全局变量的定义等),和其他的要求在本文件中引用的源程序文件。说明P195-196作用:减少程序的重复开发。“文件包含”处理说明:一条include命令只能指定一个被包含文件“文件包含”的嵌套(见p195)“文件包含”表示方式“盘符:文件名.c(/.h)”<文件名.c(/.h)>形式一#ifdef宏名程序段1#else程序段2#endif或者#ifdef宏名程序段1#endif编译预处理——条件编译作用:减少被编译语句,最终减少

8、目标文件的长度。当标识符已被定义,对程序段1编译;否则,对程序段2编译。注:标识符一般用#define命令定义形式二#ifndef宏名程序段1#else程序段2#endif或者#ifndef宏名程序段1#endif当标识符未被定义,对程序段1编译;否则,对程序段2编译。形式三#if表达式程序段1#else程序段2#e

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。