版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九章第九章 预处置命令预处置命令 为提高编程效率,改善程序设计环境,为提高编程效率,改善程序设计环境,ANSI C一致规一致规定了在定了在C源程序中参与一些源程序中参与一些“预处置命令。但它们不是预处置命令。但它们不是C言语的一部分。为与普通言语的一部分。为与普通C语句相区别,这些命令以符号语句相区别,这些命令以符号“#开头开头C提供的预提供的预 处置功能处置功能宏定义宏定义 #define #undef文件包含文件包含 #include条件编译条件编译 #ifdef #else #endif一一 宏定义宏定义1 不带参数的宏定义的普通方式不带参数的宏定义的普通方式#define 标识符标识
2、符 字符串字符串例:例:#define PI 3.1415926main()float l,s,r,v;printf(“input radius:);scanf(“%f,&r);l=2.0*PI*r;s=PI*r*r;v=3.0/4*PI*r*r*r;printf(“l=%10.4fns=%10.4fnv=%10.4fn,l,s,v);被被3.1415926替替代代功能:将程序中出现的一切标识符用字符串交换。功能:将程序中出现的一切标识符用字符串交换。 标识符也称宏名。标识符也称宏名。运转结果:运转结果:l= 25.1328;s= 50.2655;v= 150.7966;阐明:阐明:1
3、 宏名普通用大写宏名普通用大写2 提高程序的通用性,便于修正提高程序的通用性,便于修正3 宏定义在预处置时不作正确性检查宏定义在预处置时不作正确性检查4 宏定义不是宏定义不是C语句,所以不要加分号,否那么作语句,所以不要加分号,否那么作 为宏定义的一部分为宏定义的一部分5 通常定义在文件的开场地方,保证本文件可用通常定义在文件的开场地方,保证本文件可用6 可以用可以用# undef命令终止宏定义的作用域命令终止宏定义的作用域7 可以援用已定义的宏名可以援用已定义的宏名8 程序中用双括号括起来的字符串内的字符不被交换程序中用双括号括起来的字符串内的字符不被交换9 宏定义只作字符交换,不分配内存空
4、间宏定义只作字符交换,不分配内存空间2 带参数的宏定义的普通方式带参数的宏定义的普通方式#define 标识符参数表标识符参数表 字符串字符串功能:将程序中出现的一切标识符用字符串交换。字功能:将程序中出现的一切标识符用字符串交换。字 符串中包含在括弧中所指定的参数。符串中包含在括弧中所指定的参数。 标识符也称宏名。标识符也称宏名。例例1:#define S(a,b) a*barea=S(3,2);area=3*2;等效于等效于实参实参形参形参例例2:#define PI 3.1415926#define S(r) PI*r*rarea=S(a+b);area=PI*a+b*a+b;等效于等效
5、于例例3:#define PI 3.1415926#define S(r) PI*( r )*( r )area=S(a+b);area=PI*(a+b)*(a+b);等效于等效于带参数的宏的阐明:带参数的宏的阐明: 只添加了第只添加了第10条条1 宏名普通用大写宏名普通用大写2 提高程序的通用性,便于修正提高程序的通用性,便于修正3 宏定义在预处置时不作正确性检查宏定义在预处置时不作正确性检查4 宏定义不是宏定义不是C语句,所以不要加分号,否那么作语句,所以不要加分号,否那么作 为宏定义的一部分为宏定义的一部分5 通常定义在文件的开场地方,保证本文件可用通常定义在文件的开场地方,保证本文件可
6、用6 可以用可以用# undef命令终止宏定义的作用域命令终止宏定义的作用域7 可以援用已定义的宏名可以援用已定义的宏名8 程序中用双括号括起来的字符串内的字符不被交换程序中用双括号括起来的字符串内的字符不被交换9 宏定义只作字符交换,不分配内存空间宏定义只作字符交换,不分配内存空间10 标识符与参数表之间不能有空格标识符与参数表之间不能有空格宏交换与函数调用的区别宏交换与函数调用的区别函数调用函数调用求表达式的值,并带入形参求表达式的值,并带入形参在程序运转时进展在程序运转时进展分配内存单元分配内存单元可以有或无前往值可以有或无前往值可以有或无传送值可以有或无传送值函数名或参数都有类型函数名
7、或参数都有类型一个函数只可得到一个前往值一个函数只可得到一个前往值不添加源程序长度不添加源程序长度占用运转时间占用运转时间宏交换宏交换字符交换字符交换在编译是进展在编译是进展不分配内存单元不分配内存单元无前往值概念无前往值概念无传送值无传送值宏名及其参数都无类型宏名及其参数都无类型一个宏可以设法得到多个结果一个宏可以设法得到多个结果多次运用会增长源程序多次运用会增长源程序不占用运转时间,占用编译时间不占用运转时间,占用编译时间例:例:#define PI 3.1415926#define CIRCLE(R,L,S,V) L=2*PI*R; S=PI*R*R;V=4.0/3.0*PI*R*R*R
8、main()float r,l,s,v;scanf(“%f,&r);CIRCLE(r,l,s,v);printf(“r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn,r,l,s,v);经过预编译后经过预编译后main()float r,l,s,v;scanf(“%f,&r);l=2*PI*r; s=PI*r*r;v=4.0/3.0*PI*r*r*r;printf(“r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2fn,r,l,s,v);留意宏展开时,作为参数的括号不用展开留意宏展开时,作为参数的括号不用展开例:例:#define IEE(x,y) x
9、+y展开宏时:展开宏时:printf(,IEE(3,4)/IEE(5,6);应该是:应该是:3+4/5+6而不是:而不是: (3+4)/(5+6)二二 文件包含文件包含 文件包含定义的普通方式文件包含定义的普通方式#include “文件名文件名功能:将另外一个源文件的全部内容包含进来,即将另外的功能:将另外一个源文件的全部内容包含进来,即将另外的 文件包含到本文件之中。文件包含到本文件之中。或或 #include f1.c#include Af2.cB编译前编译前编译后编译后f1.cAB*.h或*.c阐明:阐明:1一个一个#include只能指定一个被包含文件只能指定一个被包含文件2编译后成
10、为一个源文件编译后成为一个源文件3称为规范方式,只在存放称为规范方式,只在存放C库函数头文件所在库函数头文件所在 目录寻觅所要包含的文件目录寻觅所要包含的文件4“ 先在当前目录寻觅所要包含文件,假设没有先在当前目录寻觅所要包含文件,假设没有那么那么 转用规范方式寻觅所要包含文件转用规范方式寻觅所要包含文件三三 条件编译条件编译方式方式1:#ifdef 标识符标识符 程序段程序段1#else 程序段程序段2#endif可以没有可以没有条件编译:有时需求源程序中的部分内容只需在满足条件编译:有时需求源程序中的部分内容只需在满足 某些条件下时才进展编译,也就是对一部某些条件下时才进展编译,也就是对一
11、部 分内容指定编译的条件。分内容指定编译的条件。益处:益处: 减少被编译的语句和程序目的代码,节省减少被编译的语句和程序目的代码,节省 运转时间。运转时间。功能:假设曾经定义功能:假设曾经定义“标识符,那么编译程序段标识符,那么编译程序段1,否那么否那么 编译程序段编译程序段2方式方式2:#ifndef 标识符标识符 程序段程序段1#else 程序段程序段2#endif可以没有功能:假设没有定义功能:假设没有定义“标识符,那么编译程序段标识符,那么编译程序段1,否那么否那么 编译程序段编译程序段2方式方式3:#if 表达式表达式 程序段程序段1#else 程序段程序段2#endif可以没有可以没有功能:假设表达式为真非零那么编译程序段功能:假设表达式为真非零那么编译程序段1,否,否那么那么 编译程序段编译程序段2在在file1.c中中,添
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026年青岛版八年级上册数学 1.1 定义与命题 课件
- 中风鼻饲护理质量评价标准
- 肠梗阻患者的排便观察与护理
- 2025年办公室家具采购协议
- 《污染地块可持续风险管控与低碳再利用技术指南》(征求意见稿)
- 2025年你的运动目标需要这些数据支撑
- 2025年测试自动化中的异常日志分析
- 2026 年中职开放教育(开放教育理论)试题及答案
- 省直考试真题及答案
- 声音信号压缩方法
- GB 46768-2025有限空间作业安全技术规范
- GJB827B--2020军事设施建设费用定额
- 短暂性脑缺血发作诊疗指南诊疗规范
- 五子棋社团活动方案及五子棋社团活动教案
- 义务教育(新课标)初中物理实验目录
- 个人独资企业公司章程(商贸公司)
- GA/T 1073-2013生物样品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、异丙醇和正丁醇的顶空-气相色谱检验方法
- A建筑公司发展战略研究,mba战略管理论文
- 中国汽车工业协会-软件定义汽车:产业生态创新白皮书v1.0-103正式版
- 情报学-全套课件(上)
- 公司战略规划和落地方法之:五看三定工具解析课件
评论
0/150
提交评论