




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
回顾函数定义函数递归调用全局和局部变量静态和动态存储问题常用函数独立一个文件,使用时需要包含调试程序和使用程序时需要不同的输入方式等符号常量的使用等第九章预处理命令Focus掌握宏定义和文件包含的使用
编译预处理命令以
#
开头;
编译预处理命令放在文件开头,后面不加;号。编译预处理主要有三种:1)宏定义
2)文件包含
3)条件编译
#definePRNprintf(“%d,%f”,k,x);voidmain(){intk=3;floatx=8.975;
PRN}一.不带参数的宏定义
#definePI3.1415926
第一节宏定义说明:1.宏名习惯用大写字母表示。
2.
可代替字符串、数值、表达式、语句等。3.宏代换在编译以前进行并完成。
4.宏展开仅忠实替换,不做语法检查。结果:20S(4,5)5*4S(x+2,y+2)y+2*x+2()()()()
25.6二.带参数的宏定义-----参数替换
#defineS(t,w)w*tvoidmain(){floatx=5.5,y=12.6;
printf(“%d\n”,S(4,5));
printf(“%f\n”,S(x+2,y+2));}1)替换时,可以是各种类型的量。2)替换时不做计算。3)可嵌套定义
#definePI
3.1415926#defineS(r)PI*r*r说明第二节文件包含处理
文件包含编译预处理命令格式:
#include<文件名>
或
#include“文件名”
<文件名>
表示在源文件所在目录以外的目录中查找要
包含的文件
“文件名”
表示先在源文件所在目录中查找要包含文件,
若没找到再在源文件所在目录以外的目录中
查找要包含的文件
f1.c#include“f2.c”p2p1p1f1.cf2.cp2使用文件包含指令时应注意几个问题:
(1)一个#include指令只能包含一个文件,要包含多个文件就要用多个#include指令
(2)文件包含可以嵌套,比如文件file1中含有指令:
#include″f2.c″
而在文件f2.c中又有:
#include<math.h>
#include″f3.c″
则file1也把f2.c中包含的文件全部包含进来。
(3)被包含文件中的全局变量也是包含文件中的全局变量,因此在包含文件中对这些量不必再加
ertern说明即可引用。
(4)被包含文件的扩展名一般用.h(头),表示是在文件开头加进来的,其内容可以是程序文件或数据文件,也可以是宏定义、全局变量声明等。这些数据有相对的独立性,可被多个文件使用,不必在多个文件中都去定义,而只在一个文件中定义,其他文件中包含这个定义文件即可。
第三节条件编译其中<标识符>若已用#define命令定义过,则编译{程序段1}形式1.#ifdef<标识符>
{程序段1}
#else{程序段1}
#
endif
例:
#include<stdio.h>#defineTtruemain(){#ifdefT
printf(“编译程序1”);#else
printf(“编译程序2”);#endif}
main(){printf(“编译程序1”);}等价于形式2#ifndef<标示符>
{程序段1}
#else{程序段2}
#endif
逻辑和作用与形式1相反#defineORDER1main(){intk;#ifORDERfor(k=1;k<11;k++)printf(“%d”,k);#elsefor(k=11;k<1;k--)printf(“%d”,k);#endif}
main(){intk;for(k=1;k<11;k++)printf(“%d”,k);}形式3
#if<表达式>
{程序段1}#else{程序段2}#endif课堂例题课后练习2.预处理命令可能具有如下特点:
(1).均以“#”开头(2).必在程序开头
(3).后面不加分号(4).在真正编译前处理正确的说法是,预处理命令具有以下__________条特点:
A1,2B1,3,4
C1,3D1,2,3,41.编译预处理包括__________A.文件包含、宏定义和预编译B.构造工程文件
C.语句注释D.编辑源程序3.假设有宏定义:#defineNUM15
#defineDNUMNUM+NUM
则表达式
DUNM/2+NUM*2
的值为:__________524.程序段如下:#defineN2
#defineMN+1
#defineNUM2*M+1voidmain(){inti;intsum=0;for(i=1;i<=NUM;i++)sum+=i;}sum
最后的值为:__________21此时才替代2*M+12*N+1+12*2+1+1
6
5.下列程序的输出结果为__________#definep(v,format)printf(“v=%format”,v)#defines(x)3.5*x*x
main(){inta=1,b=2;floats1;s1=s(a+b);p(s1,f);}Av=14
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内设计老师入职培训
- 大学生创新创业课程答辩指导
- 山西省部分重点中学2024-2025学年高一下学期4月月考生物试卷(原卷版+解析版)
- 2025年陕西省汉中市宁强县中考一模英语试题(原卷版+解析版)
- 优化电子健康记录系统提升医疗服务效率与质量
- 人性化医疗办公家具提升工作效率的关键因素
- 从数据安全到数据价值区块链在供应链管理中的应用与挑战
- 以移动营业厅为平台的健康教育模式创新研究报告
- 创新驱动未来医疗器械智能化的商业策略与实践
- 2025年中国合金摩托车市场调查研究报告
- 核辐射加工技术在食品安全监管中的应用
- 教育培训合同纠纷起诉状模板
- 入职心理测试题目及答案300道
- 英文版中国故事绘本愚公移山
- 声呐技术介绍
- 2023广州美术学院附属中等美术学校(广美附中)入学招生测试卷数学模拟卷
- 国家粮食和物资储备局招聘考试试题及答案
- 高中物理【实验:探究向心力大小的表达式】学案及练习题
- 城管整治占道经营方案
- 超星尔雅学习通《形势与政策(2024春)》章节测试答案
- 第六节勃朗特姐妹分析课件
评论
0/150
提交评论