c语言编译预处理.ppt
《c语言编译预处理.ppt》由会员分享,可在线阅读,更多相关《c语言编译预处理.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章本章主要内容本章主要内容1.掌握无参宏定义和带参宏定义的方法掌握无参宏定义和带参宏定义的方法2.掌握文件包含命令的形式和文件包含的掌握文件包含命令的形式和文件包含的实现过程实现过程3.了解条件编译命令了解条件编译命令 C的源程序的源程序 预处理预处理 编译编译 目标程序目标程序 (*.C)_ (*.OBJ)编译系统中有编译系统中有 :预处理程序预处理程序 编译程序编译程序宏替换#define N 20 文件包含#include条件编译 if(.)C中的预处理命令中的预处理命令分类分类宏定义有两种类型宏定义有两种类型:字符串替换和带参数的宏替换字符串替换和带参数的宏替换 1 字符串宏替换字
2、符串宏替换 功能:功能:在预处理时在预处理时,将程序中宏定义之后出现的将程序中宏定义之后出现的所有的宏名所有的宏名,用宏替换体代替。用宏替换体代替。宏替换名宏替换名宏替换体宏替换体例如:例如:#define PI 3.14159 格式:格式:#define 标识符字符串标识符字符串 C的编译程序调用预处理程序检查有否的编译程序调用预处理程序检查有否宏名宏名,若,若有,用有,用宏替换体宏替换体将其替换,完成之后,将替换后的源将其替换,完成之后,将替换后的源程序交该编译程序。程序交该编译程序。8.1 8.1 宏定义宏定义 用途用途:常用的符号常数常用的符号常数 PI=3.14159 自然对数的底自
3、然对数的底:2.71828 数组的长度数组的长度#define N 10 /*编译之前用编译之前用10替换所有的替换所有的N */.int aN 说明说明:v 通常放在程序开头通常放在程序开头,不加分号不加分号v 是代替是代替,不是赋值不是赋值(不作语法检查不作语法检查)v 可将多个语句或表达式定义为一个宏替换可将多个语句或表达式定义为一个宏替换v 区别变量和关键字区别变量和关键字,习惯用大写习惯用大写#define R 3.0#define PI 3.145926#define L 2.0*PI*R#define S PI*R*Rv 双引号中的不替换双引号中的不替换v 有效范围有效范围,从定
4、义开始到程序结尾从定义开始到程序结尾例:例:#define PI 3.14159main()printf(“PI=%fn”,PI);结果:结果:PI=3.14159main()printf(“PI=%fn”,”PI”);v 可以嵌套可以嵌套,后定义的宏可以包含先定义的宏名后定义的宏可以包含先定义的宏名结果结果:PI=PI2 带参数的宏定义带参数的宏定义 带参数的宏不仅能进行字符串代替,而且还进带参数的宏不仅能进行字符串代替,而且还进行参数代换。行参数代换。格式:格式:#define 宏名(参数表)宏名(参数表)表达式表达式 功能功能:带参数的宏将一个带参数的宏将一个带形参带形参的表达式定义为一
5、个带参数的表达式定义为一个带参数的宏名,预处理程序对程序中所有的宏名,预处理程序对程序中所有带实参带实参表的宏名进行表的宏名进行宏宏展开展开替换,替换,用表达式代替宏名,用参数表中的实参代替表用表达式代替宏名,用参数表中的实参代替表达式中对应达式中对应 的形参的形参。例:例:#define S(a,b)a*b程序中程序中 S(3,2)3*2 用途:用途:用带参数的宏可以代表一些简短的表达式,提高用带参数的宏可以代表一些简短的表达式,提高程序执行的效率。程序执行的效率。*宏定义可以嵌套宏定义可以嵌套*对常用的格式输入输出函数对常用的格式输入输出函数printfprintf可以进行宏定可以进行宏定
6、义,使程序简化义,使程序简化*宏名与参数的圆括号之间不能有空格宏名与参数的圆括号之间不能有空格 s (a,b)s (a,b)说明:说明:*宏定义命令要求在一行内写完,如换行,用宏定义命令要求在一行内写完,如换行,用“”表示下一行继续。表示下一行继续。*对于宏定义的形参要根据需要加上圆括号,以免对于宏定义的形参要根据需要加上圆括号,以免 发生运算错误发生运算错误例例1 使用有参宏替换求园的面积。使用有参宏替换求园的面积。#define PI 3.1415926#define S(r)PI*r*r main()float a=3.6,area;area=S(a);printf(“r=%fnarea
7、=%fn”,a,area);例例2 求下列语句的循环次数。求下列语句的循环次数。#include“stdio.h”#define N 2#define M N+1#define NUM(M+1)*M/2 main()int i,n=0;for(i=1;i=NUM;i+)n+;printf(“%d”,n);例例3 用两种方法计算用两种方法计算1-10的平方(函数,宏)的平方(函数,宏)square(n)int n;return(n*n);main()int i=1;while(i=10)printf(“%dn”,square(i+);用函数方法:用函数方法:用带参数的宏方法:用带参数的宏方法:#
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编译 预处理
限制150内