C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx

C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx

ID:52769683

大小:130.76 KB

页数:12页

时间:2020-03-07

C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx_第1页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx_第2页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx_第3页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx_第4页
C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx_第5页
资源描述:

《C语言程序设计 教学课件 作者 孙鸿飞 刘国成 主编ch09.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、9.1概述9.2宏定义9.3文件包含9.4条件编译第9章编译预处理9.1概述9.1.1预处理的工作方式作用:对源程序编译之前,对#开头的命令做一些预处理9.1.2预处理命令种类:宏定义#define文件包含#include条件编译#if--#else--#endif等9.2宏定义如if(x==YES)printf(“correct!”);elseif(x==NO)printf(“error!”);展开后:if(x==1)printf(“correct!”);elseif(x==0)print

2、f(“error!”);不带参数宏定义一般形式:#define宏名宏体功能:用指定标识符(宏名)代替字符序列(宏体)宏名中不允许有空格,而且必须遵循C变量命名规则。宏名一般用大写字母。宏展开:预编译时,用宏体替换宏名---不作语法检查如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);定义位置:一般在程序开头作用域:从定义命令到文件结束#undef可终止宏名作用域格式:#undef宏名例#defineYES1

3、main(){……..}#undefYES#defineYES0max(){……..}宏定义可嵌套,不能递归例#defineMAXMAX+10()引号中的内容与宏名相同不需置换例#definePI3.14159printf(“2*PI=%f”,PI*2);宏展开:printf(“2*PI=%f”,3.14159*2);宏定义中使用必要的括号()例#defineWIDTH80#defineLENGTHWIDTH+40var=LENGTH*2;宏展开:var=80+40*2;()()例#defin

4、eWIDTH80#defineLENGTHWIDTH+40var=LENGTH*2;宏展开:var=80+40*2;带参数宏定义一般形式:#define宏名(参数表)宏体宏展开:形参用实参置换,其它字符保留宏体及各形参外一般应加括号()例#defineS(a,b)a*b………..area=S(3,2);宏展开:area=3*2;例#definePOWER(x)x*xx=4;y=6;z=POWER(x+y);宏展开:z=x+y*x+y;一般写成:#definePOWER(x)((x)*(x))宏展开:z=

5、((x+y)*(x+y));#defineMAX(x,y)(x)>(y)?(x):(y)…….main(){inta,b,c,d,t;…….t=MAX(a+b,c+d);……}宏展开:t=(a+b)>(c+d)?(a+b):(c+d);【例9.2】编程,利用带参数的宏完成比较两个数的大小。9.3文件包含功能:一个源文件可将另一个源文件的内容全部包含一般形式:#include“文件名”或#include<文件名>#include“file2.c”file1.cfile2.cfile1.cfile2.cAB

6、A<>直接按标准目录搜索“”先在当前目录搜索,再搜索标准目录文件包含可嵌套#include“file2.c”file1.cAfile3.cC#include“file3.c”file2.cBfile1.cAfile3.cfile2.c例文件包含举例#include#defineN8#include"fun.c"intmain(){printf("%ld",fac(N));}/*fun.c*/longintfac(intn){inti;longints=1;for(i=1;i<=n;

7、i++)s*=i;returns;}9.4条件编译功能:根据指定的标识符是否被定义过,确定在程序编译阶段编译哪一段程序段。形式1:#if表达式程序段1#else程序段2#endif形式2:#ifdef标识符程序段1#else程序段2#endif形式3:#ifndef标识符程序段1#else程序段2#endif例:在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息,可在源程序中插入以下的条件编译段:#ifdefDEBUGprintf(”x=%d,y=%d,z=%d”,x,y,z)

8、;#endif#defineLETTER1/*将1改为0,以大写输出*/main(){charstr[20]="CLanguage",c;inti;i=0while((c=str[i])!=′′){i++;#ifLETTERif(c>=′a′&&c<=′Z′)c=c-32;#elseif(c>=′A′&&c<=′Z′)c=c+32;#endifprintf("%c",c);}}例根据需要设置条件编译,能将字母全改为大写输出,或全改为小写

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

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

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