- 1
- 0
- 约4.02千字
- 约 4页
- 2020-11-23 发布于天津
- 举报
第七章 编译预处理
教学时间:
2 学时
教学目的:
1、掌握宏定义的概念及使用
2 、理解“文件包含”的概念和使用
3 、了解条件编译的概念
内容、重点、难点:
内容 :
7.1 宏定义
7.2 文件包含
重点:
1、宏定义的概念
2 、宏定义在程序中的应用
难点:
对条件编译的理解
注:教案尾页有小结和作业
第 7 章 编译预处理
编译预处理是在编译前对源程序进行的一些预加工。它是 C 语言与其它高级语言的一
个重要区别,有助于编写易移植、易调试的程序。预处理,顾名思义,就是编译器在对源程
序进行编译之前对其进行宏定义的替换及文件包含的嵌入等操作。
7.1 宏定义
一、问题的提出
程序中经常遇到重复多次地书写某些字符串的情况,例如: 3.1415926, 工作量大,且不
好记忆,能否作一个替换呢?
我们可以通过宏定义的方法来解决这一问题。
二、不带参数的宏定义
不带参数的宏定义的一般形式:
#define 宏名 宏体
例如: #define PAI 3.1415926
例 7.1 求半径为 r 的圆的面积和球的体积。
#define PAI 3.1415926
main( )
{float r , s , v ;
printf ( ″\n input r= ″) ;
scanf ( ″%f ″,r) ;
s=PAI * r * r ;
v=3.0/4 * r * r * r ;
printf ( ″s=%10.4f\nv=%10.4f\n ″ , s , v) ;
}
[ 分析 ] 进行预处理后 ,函数中的宏名 PAI 将被其对应的宏体字符串所替换
s=3.1415926 * r * r ;
v=3.0/4 * 3.1415926 * r * r * r ;
关于宏定义的说明:
1. 宏名的替换过程其实是一种简单的复制工作,它不作任何的计算,
也不作任何错误检查,错误的检查工作要等到编译过程中才会进行。
2 . 宏名一般习惯写成大写字母,主要是为了与变量名区分。
3 . 从上例中可以看出,使用宏名后可以提高程序的可读性。
4 . 进行宏定义时,可以使用前面已定义的宏名
例 7.2
#define R 3.0
#define PAI 3.1415926
#define L 2*PAI*R
#define S PAI*R*R
main()
{
printf( ″ L=% f\nS= % f\n ″, L, S);
}
经过宏替换后 printf 函数调用语句为:
printf( ″ L=% f\n ″,2*3.1415926*3.0,3.1415926*3.0*3.0)
5 . 在进行替换的预处理时,对程序中被“” (双引号 )括起来的宏名将不进行宏替换。
三、带参数的宏定义
带参数的宏定义的一般格式形式:
#define 宏名 (参数表 ) 宏体
例如: #define JI(x,y) x*x*y
m=JI(4 ,5) ;
注意:宏名与参数表的括号之间不可有空格符,否则,系统将把程序中的宏名替换成
空格后的字符串,变成是一个不带参数的宏定义。
例 7.3 用带参宏定义求长方体体积。
#define V(a,b,c) a*b*c
main()
{
float a,
您可能关注的文档
- 第7单元测试题万以内数的认识.pdf
- 第8单元《平均数与条形统计图》单元检测题.pdf
- 第8章一元一次不等式8.1认识不等式.pdf
- 第8讲面积计算.pdf
- 第8课短跑;素质.pdf
- 第8课辛亥革命设计.pdf
- 第9单元数学广角—鸡兔同笼第1课时鸡兔同笼教学设计.pdf
- 第9周计划春季.pdf
- 第一单元陶罐和铁罐活动2教案.pdf
- 第一学期小学三年级数学期末检测参考试卷.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)