




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.1概述9.2宏定义9.3文件包含9.4条件编译9.1概述9.1.1预处理的工作方式作用:对源程序编译之前,对#开头的命令做一些预处理9.1.2预处理命令种类:宏定义#define文件包含#include条件编译#if--#else--#endif等9.2宏定义如if(x==YES)printf(“correct!\n”);elseif(x==NO)printf(“error!\n”);展开后:if(x==1)printf(“correct!\n”);elseif(x==0)printf(“error!\n”);不带参数宏定义一般形式:#define宏名宏体功能:用指定标识符(宏名)代替字符序列(宏体)宏名中不允许有空格,而且必须遵循C变量命名规则。宏名一般用大写字母。宏展开:预编译时,用宏体替换宏名---不作语法检查如#defineYES1#defineNO0#definePI3.1415926#defineOUTprintf(“Hello,World”);定义位置:一般在程序开头作用域:从定义命令到文件结束#undef可终止宏名作用域格式:
#undef宏名例#defineYES1main(){……..}#undefYES
#defineYES0max(){……..}宏定义可嵌套,不能递归例#defineMAXMAX+10(
)引号中的内容与宏名相同不需置换例#definePI3.14159printf(“2*PI=%f\n”,PI*2);宏展开:printf(“2*PI=%f\n”,3.14159*2);宏定义中使用必要的括号()例#defineWIDTH80#defineLENGTH
WIDTH+40var=LENGTH*2;宏展开:var=80+40*2;(
)(
)例#defineWIDTH80#defineLENGTH
WIDTH+40var=LENGTH*2;宏展开:var=80+40*2;带参数宏定义一般形式:#define宏名(参数表)宏体宏展开:形参用实参置换,其它字符保留宏体及各形参外一般应加括号()例#defineS(a,b)a*b………..area=S(3,2);宏展开:area=3*2;例#definePOWER(x)x*xx=4;y=6;z=POWER(x+y);宏展开:z=x+y*x+y;一般写成:#definePOWER(x)((x)*(x))宏展开:z=((x+y)*(x+y));#defineMAX(x,y)(x)>(y)?(x):(y)…….main(){inta,b,c,d,t;…….t=MAX(a+b,c+d);……}宏展开:t=(a+b)>(c+d)?(a+b):(c+d);【例9.2】编程,利用带参数的宏完成比较两个数的大小。9.3文件包含功能:一个源文件可将另一个源文件的内容全部包含一般形式:#include“文件名”
或#include<文件名>#include“file2.c”file1.cfile2.cfile1.cfile2.cABA<>直接按标准目录搜索
“
”
先在当前目录搜索,再搜索标准目录文件包含可嵌套#include“file2.c”file1.cAfile3.cC#include“file3.c”file2.cBfile1.cAfile3.cfile2.c例文件包含举例#include<stdio.h>#defineN8#include"fun.c"intmain(){ printf("%ld\n",fac(N));}/*fun.c*/longintfac(intn){ inti; longints=1; for(i=1;i<=n;i++) s*=i; returns;}9.4条件编译功能:根据指定的标识符是否被定义过,确定在程序编译阶段编译哪一段程序段。
形式1:#if
表达式
程序段1
#else
程序段2
#endif
形式2:#ifdef
标识符
程序段1
#else
程序段2
#endif
形式3:#ifndef
标识符
程序段1
#else
程序段2
#endif
例:在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息,可在源程序中插入以下的条件编译段:
#ifdefDEBUGprintf(”x=%d,y=%d,z=%d\n”,x,y,z);#endif#defineLETTER
1/*将1改为0,以大写输出*/main(){charstr[20]="CLanguage",c;
inti;
i=0
while((c=str[i])!=′\0′){i++;
#ifLETTER
if(c>=′a′&&c<=′Z′)c=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CJ/T 3052-1995城市客运车辆保养通用技术条件
- DB13T 5008-2019 室内外细颗粒物过滤用多功能纱网通 用技术条件
- 酵素浴家用桑拿排毒企业制定与实施新质生产力项目商业计划书
- 浙商银行笔试题库及答案
- 找工作笔试题目及答案
- 在编教师考试试题及答案
- 八年级地理上册期末试卷(含答案)
- 院感考试试题及答案填空
- 2025届河南省信阳市淮滨县淮滨外国语学校、滨城高中高三下学期二模物理试题(解析版)
- 送电线路工高级工考试题(含参考答案)
- 走进创业学习通超星期末考试答案章节答案2024年
- 中海新房购房合同模板
- 2023-2024学年湖南省邵阳市高一下学期期末考试历史试题(解析版)
- 多重耐药感染的防控PDCA
- DB34T∕ 2317-2015 金属非金属地下矿山生产技术规程
- 用户行为分析与金融产品设计
- 江苏省宿迁市(2024年-2025年小学四年级语文)部编版期末考试(下学期)试卷及答案
- 镇静催眠药分类培训课件
- 施工现场建筑垃圾减量化专项方案
- 经外周静脉穿刺中心静脉置管(PICC)操作技术专家共识解读
- 管工技师理论试题及答案
评论
0/150
提交评论