第七章编译预处理.pdfVIP

  • 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,

文档评论(0)

1亿VIP精品文档

相关文档