版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章预处理命令
是在编译前进行的一种编译预处理;然后再将处理的结果,与源程序一起编译。
本章介绍C语言的三种编译预处理命令:#define、
#include和#if。
均以字符“#”开头,一行只能写一条,不是C语言的语句,无分号“;”
。1源文件*.c运行文件*.exe编译编译编译目标文件*.obj连接编译连接连接编译预处理编译编译预处理包括:
宏定义#define
文件包含#include
条件编译#if
编译预处理2#define
宏名
字符串宏定义的功能:
在进行编译前,用字符串原样替换程序中的宏名。这个替换过程称为“宏替换”或“宏展开”,字符串也称为替换文本。
命令的一般格式:1不带参数的宏定义9.1宏定义#define
例如:#definePI
3.14main(){floatr,s,c;
scanf(“%f”,&r);s=PI*r*r;
printf(“PI=%f,s=%f”,PI,s);}替换3.143.14编译②为了增加程序的可读性,建议宏名用大写字母,其他的标识符用小写字母。③双引号中有与宏名相同的字符串不进行替换。④已经定义的宏名可以被后定义的宏名引用。在预处理时将层层进行替换。说明:①宏定义的作用域是从定义处开始到源文件结束,但根据需要可用undef命令终止其作用域。形式为:
#undef
宏名源程序:#definePI3.14#defineSPI*r*r#defineV4*S*r/3voidmain(){floatr;
printf("\nInputr:");
scanf("%f",&r);
printf("S=%.2fV=%.2f\n",S,V);}编译预处理后的程序:voidmain(){floatr;
printf("\nInputr:");
scanf("%f",&r);
printf("S=%.2fV=%.2f\n",3.14*r*r,4*
3.14*r*r
*r/3);}SVSV进入编译例如:命令的一般形式2带参数的宏定义#define宏名(形参表)
字符串功能:
在编译预处理时,把源程序中所有带参数的宏名用宏定义中的字符串替换,并且用宏名后圆括号中的实参替换字符串中的形参。例如:#defineMAX(X,Y)((X)>(Y)?(X):(Y))【例2】带参数的宏定义。#defineMAX(x,y)((x)>(y)?(x):(y))voidmain(){…
printf("%d\n",MAX(a,b));
printf("%d\n",MAX(a+m,b+n));}分两次替换:①将宏名MAX(a,b)
替换成字符串((x)>(y)?(x):(y))。②用实参a替换形参x,实参b替换形参y。程序中的两个printf语句被展开为:printf("%d\n",((a)>(b)?(a):(b)));printf("%d\n",((a+m)>(b+n)?(a+m):(b+n)));【例3】分析下面程序运行后的输出结果。#defineMA(x)x*(x-1)voidmain(){inta=1,b=2;
printf("%d\n",MA(1+a+b));}分两次替换:
①MA(1+a+b)
用x*(x-1)
替换。②用1+a+b替换x。printf语句被展开为:printf("%d\n",1+a+b*(1+a+b-1));特别注意:由于替换文本中的x没有用括号括起,因此,1+a+b也不能用括号括起。程序输出结果:81).命令的一般形式 格式1:#include<文件名>格式2:#include"文件名"
文件包含是将指定的某个源文件的内容全部包含到当前文件中。用include命令实现。用格式1,预处理程序仅在编译系统安装目录下查找指定文件。用格式2,预处理程序首先在当前目录中查找指定文件,若找不到再到系统安装目录中查找。9.2包含命令#include
#include<stdio.h>#include“e:\f2.c”Af.c
Bf2.c
CStdio.hAf.c
B
C注意:一行只能包含一个文件,若要包含多个文件则要写多行#include命令!预处理前:预处理后的源程序:编译器对预处理后的源程序进行编译。11有一个名为init.txt的文件,内容如下:#defineHDY(A,B)A/B#definePRINT(Y)printf(“y=%d\n”,Y)有以下程序:#include”init.txt”main(){inta=1,b=2,c=3,d=4,k;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47237-2026铸造机械落砂除芯设备安全技术规范
- GB/T 47211-2026家畜遗传资源保护区保种技术规范
- 2026年安徽中烟工业有限责任公司高层次人才招聘(3人)笔试备考试题及答案解析
- 2026年平顶山工业职业技术学院单招职业技能考试题库附答案详细解析
- 2026中国劳动关系学院招聘7人笔试模拟试题及答案解析
- 2026年陕西省榆林市高职单招职业适应性测试考试题库附答案详细解析
- 2026湖北恩施州宣恩县事业单位第一次引进高层次、紧缺急需人才22人笔试参考题库及答案解析
- 2026年石家庄职业技术学院单招综合素质考试题库附答案详细解析
- 2026年潍坊临朐县公立医院校园招聘(30名)笔试模拟试题及答案解析
- 2026云南昆明海螺新材料科技有限公司社会招聘1人笔试备考题库及答案解析
- 国家事业单位招聘2023中国地质调查局昆明自然资源综合调查中心第二批招聘拟聘用人员云笔试历年参考题库典型考点附带答案详解
- 代理记账内部交接制度
- 5.1人民代表大会制度 课件(23张幻灯片)+内嵌视频 道德与法治统编版八年级下册
- 动火作业与受限空间安全管理标准
- 2026年当辅警笔试题库及一套完整答案
- 北京市东城区2025-2026学年高二上学期期末考试化学试卷(含答案)
- 国家基层糖尿病防治管理指南(2025版)
- 牛肝菌介绍教学课件
- 2025至2030中国慢性偏头痛治疗行业市场深度研究与战略咨询分析报告
- 《安全生产违法行为行政处罚办法》(应急部18号令)解读
- GB/T 8175-2025设备及管道绝热设计导则
评论
0/150
提交评论