闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt

闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt

ID:51974654

大小:197.00 KB

页数:12页

时间:2020-03-26

闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt_第1页
闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt_第2页
闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt_第3页
闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt_第4页
闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt_第5页
资源描述:

《闫会昌·C语言课件(2003PPT版) 第八章编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章编译预处理第八章编译预处理本章主要内容:8.1宏定义8.2文件包含8.3条件编译本章重点:宏定义《C语言程序设计》8.1宏定义不带参数的宏定义一般形式为:#define标识符字符串在编译程序时,用“字符串”替换程序中所有出现的“标识符”。这种形式常用来定义符号常量,其中标识符也叫宏名。例如:#definePI3.14在定义它的文件中,将用3.14替代程序中所有的PI。这个替代过程是在正常的编译这前完成的,称“宏展开”。《C语言程序设计》[例8.1]无参数宏的使用#definePI3.14main(){floatr,s;scanf(“%f”,&r)

2、;s=PI*r*r;printf(“PI=%f,r=%f,s=%f”,PI,r,s);}宏展开3.143.14说明1、宏名一般用大写字母表示,以便与变量名相区别。当然也可以用小写字母。2、宏定义不是C语句,不必在行尾加分号。如果加分号,会把分号当作字符串的一部分一同来替代宏名。3、宏名的有效范围为定义命令之后到本文件结束。4、程序中双引号内与宏名相同的字符串,不进行替换。3.14;3.14;3.14;《C语言程序设计》在进行宏定义时,可以引用已定义的宏名,实现层层置换。[例8.2]多层次的宏#defineR2.0#definePI3.14#defi

3、neSPI*R*Rmain(){printf(“S=%f”,S);}数组2.02.03.143.14*2.0*2.0《C语言程序设计》带参数的宏定义一般形式为:#define宏名(参数表)字符串其中“参数表”是参数的列表,不说明类型。例如:#defineMUL(a,b)a*b带参数的宏定义的替换要分两步进行:用“实参”的写法(不是“实参”的值)替代“形参”及字符串中出现的形参。将宏名及参数表看成一个整体,来替代变化后的字符串。数组《C语言程序设计》数组[例8.3]带参数的宏#defineMUL(a,b)a*bmain(){floatx1,x2,x3

4、;x1=MUL(2,5);x2=MUL(2+3,6-2);x3=1.0/MUL(2,5);printf(“x1=%f,x2=%f,x3=%f”,x1,x2,x3);}2,52*52*5(2+3,6-2)2+3*6-22+3*6-2(a),(b)(2)*(5)((a),(b))《C语言程序设计》[例8.4]带参数的宏与函数的比较#defineAbs1(a)(a)>=0?(a):-(a)intAbs2(inta){returna>=0?a:-a;}main(){intx=-1,y=-1;printf(“%d“,Abs1(x++));printf(“%d

5、“,Abs2(y++));printf(“%d%d”,x,y);}数组-1xy-1x++0输出结果:0110-1(x++)>=0?(x++):-(x++)不成立值为-0值为110《C语言程序设计》8.2文件包含文件包含是指一个文件可以把其它文件的内容包含进来,其一般格式为:格式1:#include“文件名”格式2:#include<文件名>文件名指定的文件可以是任何文本文件,文件的扩展名不一定是.txt,只要文件的内容是文本的格式的即可。如扩展名可以为.h、.c、.txt等等。数组仅在系统指定的标准目录中查找被包含的文件。首先在当前目录中查找被

6、包含的文件,找不到时再按系统指定的标准目录中查找。《C语言程序设计》文件包含示例:数组#include“bbb.c”main(){inta=5,b=8,c;c=max(a,b);printf(“%d”,c);}intmax(intx,inty){if(x>y)returnx;elsereturny;}bbb.c文件aaa.c文件《C语言程序设计》8.3条件编译通常程序中的所有语句都要被编译,而有时则希望根据不同情况编译程序的不同部分。条件编译就是在满足一个条件时编译一组语句,而条件不满足时不编译或编译另一组语句。条件编译有以下几种形式:[例8.5]

7、条件编译数组#ifdef标识符程序段1[#else程序段2]#endif#ifndef标识符程序段1[#else程序段2]#endif#if表达式程序段1[#else程序段2]#endif#undef标识符《C语言程序设计》第八章作业8.1下列程序意在打印出22、32和42。请根据程序的运行结果分析该程序是否正确。请把宏改写为函数,再进行分析。#defineSQR(a)((a)*(a))main(){inti,x=2;for(i=1;i<=3;i++)printf(“%d“,SQR(x++));}8.2分别用宏和函数完成,从两个数中找出最大数。数组《C

8、语言程序设计》

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

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

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