C语言编译预处理.ppt

C语言编译预处理.ppt

ID:51578438

大小:568.00 KB

页数:22页

时间:2020-03-24

C语言编译预处理.ppt_第1页
C语言编译预处理.ppt_第2页
C语言编译预处理.ppt_第3页
C语言编译预处理.ppt_第4页
C语言编译预处理.ppt_第5页
资源描述:

《C语言编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章编译预处理编译预处理(命令):#号开头的一些命令,在编译开始之前得到处理,用以辅助编译器的编译工作。一条编译预处理命令占用一行,其结尾不使用“;”作为结束符。C语言提供以下三种编译预处理命令:宏定义、文件包含、条件编译。编译预处理宏定义:使用标识符来替代字符串。其中标识符成为宏名,宏名习惯用大写字母。宏定义:不带参数的宏定义带参数的宏定义宏定义不带参数的宏定义定义格式:#define宏名字符串例:#definePI3.1415926s=2*PI*8;说明:字符串可以是任意字符串。不带参数的宏定义说明:

2、宏定义可以放在源程序的任意位置,但应该放在使用宏名的函数之前。可以嵌套定义例:#defineA3#defineBA/2不带参数的宏定义说明:在宏定义的字符串中有运算符时,为保证替换结果正确,可在适当位置加上括号。例:#defineSUM3+4+5#defineSUM(3+4+5)s=SUM/2;s=3+4+5/2s=(3+4+5)/2不带参数的宏定义说明:在字符串常量中出现的与宏名相同的字符串不认为是宏。例:#defineS(3+4+5)printf(“S=%d”,S);printf("S=%d",

3、(3+4+5));不带参数的宏定义说明:宏名的作用域从定义开始到文件结束为止,但也可以用#undef结束宏定义。例:#definePI3.1415926main(){……}#undefPIf(){……}不带参数的宏定义说明:如果宏定义中的字符串过长,可以加“”(续行符)进行换行。例:#defineSTR“Inthispartthereisashortpassagewithfivequestions.”printf(STR);带参数的宏定义定义格式:#define宏名(参数表)字符串例:#definePI

4、3.1415926#defineS(r2,r1)PI*(r2*r2-r1*r1)area=S(5,3);area=3.1415926*(5*5-3*3);带参数的宏定义说明:在宏定义的字符串中有运算符时,为保证替换结果正确,可给字符串中参数加上括号。例:#defineS(r2,r1)PI*(r2*r2-r1*r1)#defineS(r2,r1)PI*((r2)*(r2)-(r1)*(r1))area=S(5+4,4+3);area=3.1415926*(5+4*5+4-4+3*4+3);area=3.141

5、5926*((5+4)*(5+4)-(4+3)*(4+3));带参数的宏定义说明:如果宏调用的结果还与其它的操作数进行运算,为保证替换结果正确,可在宏定义的字符串外加上括号。例:#defineA(r1,r2)r1+r2#defineA(r1,r2)(r1+r2)b=A(2,4)/2;b=2+4/2;b=(2+4)/2;#defineISODD(a)(((a)%2==1)?1:0)main(){inta,i,sum=0;for(i=1;i<=10;i++){scanf("%d",&a);if(ISODD(a)

6、)sum=sum+a;}}函数和带参数的宏定义的关系:(1)函数调用需进行控制转移而带参数宏不需要。(2)函数有数据类型,带参数的宏的类型随实参类型而定。(3)调用对实参有类型要求,宏定义的实参无类型要求。(4)带参数的宏的使用不存在参数传递。(5)使用宏使程序占用的内存空间增大。(6)使用函数比使用带参数的宏执行效率低。带参数的宏定义文件包含的两种形式:(1)#include“包含文件名”/*从当前目录和系统路径搜索被包含文件*/(2)#include<包含文件名>/*系统路径搜索被包含文件*/文件包含的

7、作用是把该命令所指的另一个文件包含到当前所在的程序文件中。文件包含说明:(1)文件包含可以嵌套。(2)一个#include命令只可以包含一个头文件。a.c文件:#includemain(){……}b.h文件:#include#include文件包含条件编译:按照一定的条件控制源程序中的某些程序行是否参加编译。可以通过条件编译逐段调试程序。条件编译与分支结构的区别:三种形式:1、#if、#else、#elif、#endif命令2、#ifdef、#else、#endi

8、f命令3、#ifndef、#else、#endif命令条件编译格式1#if条件程序段1#else程序段2#endif格式2#if条件程序段#endif格式3#if条件1程序段1#elif条件2程序段2…#elif条件n程序段n[#else程序段n+1]#endif1.#if、#else、#elif、#endif命令例:编写一个程序,对输入的20个整数,利用条件编译使该程序可以求这20个数中的奇数和,也可以求偶数和

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

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

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