编译预处理(精品)

上传人:仙*** 文档编号:248479230 上传时间:2024-10-24 格式:PPT 页数:15 大小:79.50KB
返回 下载 相关 举报
编译预处理(精品)_第1页
第1页 / 共15页
编译预处理(精品)_第2页
第2页 / 共15页
编译预处理(精品)_第3页
第3页 / 共15页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第八章 编译预处理,什么是编译预处理,C,语言程序中可以使用的一些命令,在通常的编译之前先执行这些命令,再将命令处理结果与源程序一起进行编译,C,的编译预处理,宏定义,文件包含,条件编译,8,1,宏定义,一、不带参数的宏定义,格式:,#define,标识符 字符序列,作用:定义符号常量,标识符称为宏名,预处理:把所有的宏名替换成字符序列,-,宏展开,、,宏替换,说明:,1,不加分号,#define PI 3.14159;,s=PI*r*r; error,s=r*r*PI;,no,error,2.,字符序列中的错误在替换处出现,#define ONE 0128,c=ONE*25;,3.,宏名一般用大写字母表示,4.,宏定义中可以使用已定义的宏名,#define R 3.54,#define PI 3.14,#define area PI*R*R,5.,宏展开不在字符串中进行,printf(“PI,=%,d”,PI,);,6.,宏定义的作用域:从定义开始,可以用,#,undef,命令终止宏定义的作用域,#define N 10,.,#,undef,N,二、带参数的宏定义,格式:,#define,宏名,(,参数表,),字符序列,宏替换:将带实参的宏中的参数按从左到右的顺,序替换字符序列中的形参,非形参字符保留,例:,#define,S(a,b,) a*b,t=S(2,3)*5;,说明:,1,形参与宏名之间不能有空格,#define,S,(a,b,) a*b,S(2,3)-(,a,b,) a*b(2,3),2,实参可以是常量、变量、表达式,但只是符号串替换,无计算过程,#define,S(a,) PI*a*a,S(a+b,) -PI*,a+b,*,a+b,办法:形参用括号括起来,#define,S(a,) PI*(a)*(a),S(a+b,)-PI*(,a+b,)*(,a+b,),3,区分宏定义与函数,*宏替换在编译时进行,函数调用在运行时进行,*宏定义中形参无类型说明,函数中形参有类型说明,*调用函数时要求形参、实参类型一致,宏替换则无此要求,*宏替换没有返回值,函数一般都有返回值,#define,MAX(a,b,) (a)(,b)?(a,): (b),int,max(int,a,int,b),return(a,b?a:b,); ,*宏替换只是简单的字符串替换,调用函数时先计算实参表达式的值,*函数调用比宏替换代价大,给形参分配存储单元、返回地址、返回值,*宏替换使目标代码增大,宏一般用于定义简短的运算,#define,MAX(a,b,) (a)(,b)?(a,): (b),int,max(int,a,int,b),return(a,b?a:b,); ,格式:,#include “,文件名”,#include ,作用:将,include,命令中指出的文件,插入到,include,命令处,两个文件合在一起编译,便于使用系统函数和公用部分,说明:,1,一条,include,命令只能包含一个文件,2,包含可以嵌套,/*,try.c,*/,#include “,file1.c,”,.,/*,file1.c,*/,#include “,file2.c,”,8,2,文件包含,3,被包含文件中定义的全局变量、内部函数,在包含文件中也有效,4,#define “file”,与,#define ,的,区别,:,“,file”,先查找当前目录,找不到再到指定的,Include,目录中,(MinGWinclude),查找,直接到指定的,Include,目录中查找,以下for语句构成的循环执行了,次,#define N 2,#define M N+1,#define NUM (M+1)*M/2,main( ),int i,n=0;,for(i=1; i= ,a&c,= ,A&c,= Z) c+=32;,#,endif,printf(“%c”,c,);,作用:,增强程序的通用性、灵活性、可移植性,减少目标程序的长度,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!