资源描述:
《C语言程序设计 教学课件 作者 徐秋红 第6章编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章编译预处理编译预处理本章将就预处理命令的作用及使用方法做详细介绍,其主要内容有:带参数的宏定义与不带参数的宏定义的作用及使用方法文件包含的意义及在程序设计中的功能和作用条件编译在程序设计中的特殊功能宏定义不带参数的宏定义不带参数的宏定义命令的一般形式是:#define符号常量名[字符文本]例如:#definePI3.1415926main(){floatr;printf("Inputr:");scanf("%f",&r);printf("PI=%f",PI);printf("perimeter=%.3f",2*PI*r);printf("ar
2、ea=%.3f",PI*r*r);printf("sphere=%.3f",4./3.*PI*r*r*r);}宏定义带参数的宏定义带参数的宏定义命令的一般形式是:#define宏名(形参表)字符文本#definePI3.1415926#defineAREA(r)PI*r*rmain(){floatr1=10,r2=20;printf("PI=%f",PI);printf("AREA=%.3f",AREA(r1));printf("SPHERE=%.3f",4./3.*AREA(r2)*r2);}【例3】(2001年9月二级C语言水平考试试题选择题第4
3、8题)下列程序执行后的输出结果是___________。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d",M(a+b,b+c,c+a));}(A)19(B)17(C)15(D)12宏定义使用方法的举例文件包含命令文件包含是指某一个源文件中可以将另一个指定的源文件包含进来。文件包含命令的一般形式是:形式1#include"被包含文件名"形式2#include<被包含文件名>文件包含命令【例5】(2002年9月二级C语言水平考试试题选择题第37题)程序中头文件type1.h的内容如下:#defineN5#de
4、fineM1N*3程序内容如下:#include"type1.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d",i);}程序编译后运行的输出结果是__________。(A)10(B)20(C)25(D)30#include"type1.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d",i);}/*type1.h*/#defineN5#defineM1N*3#defineN5#defineM1N*3#defineM2N*2main(){inti;i=M1+M2;printf(
5、"%d",i);}条件编译命令通常情况下,一个C语言源程序中的所有非注释语句都要经过编译来形成目标代码。如果希望对C源程序中的部分内容只在满足一定条件时才进行编译,或者希望当满足某个条件时对一部分语句进行编译,而当条件不满足时对另一部分语句进行编译,这就是“条件编译”。#ifdef#ifdef的命令形式如下:#ifdef标识符程序段1#else程序段2#endif如果没有“#else”,则省略“#else”和“程序段2”。其形式如下:#ifndef标识符程序段1#endif#ifndef#ifndef的命令形式如下:#ifndef标识符程序段1#else程序段2
6、#endif以上形式也可以省略“#else”和“程序段2”,即#ifdef标识符程序段1#endif#ifndef【例7】一个主程序运行时需要由专门的数据文件提供一批原始数据。现在有一批旧数据(存放旧数据的文件名为data1_f.h)和一批新数据(存放新数据的文件名为data2_f.h),但新数据文件还处在调整期,有时还需要使用旧数据文件。现在利用一段条件编译命令,使主程序运行时既能选择执行新的数据,也能选择运行旧的数据。#ifndef#defineNEWDATA#ifndefNEWDATA#include"data1_f.h"#defineEDITION_VER"
7、1.00"#defineCREATE_DATE"2004.2"#else#include"data2_f.h"#defineEDITION_VER"2.00"#defineCREATE_DATE"2005.5"#endif此定义是关键,其决定主程序将执行哪批数据#if#if的命令形式如下:#if表达式程序段1#else程序段2#endif如果省略了“#else”和“程序段2”,则形式如下:#if表达式程序段1#endif【例8】下面程序是利用条件编译实现选择美元作货币符号,还是英镑作货币符号。#defineUS0#defineENGLISH1#defineCOU