c语言电子教案9.ppt
第9章 预处理命令 在C源程序中加入一些“预处理命令” ,以改进程序设计环境,提高编程效率。 预处理命令不是C语言本身的组成部分,不能直接对它们进行编译。 预处理命令在对程序进行编译之前进行“预处理” ,转为C语言的语句。 C提供的预处理功能主要有三种: 宏定义 -- 宏定义命令 文件包含 -- 文件包含命令 条件编译 -- 条件编译命令 命令以符号“#”开头。 9.1 宏定义 不带参数的宏定义 用一个指定的标识符来代表一个字符串,一般形式为 #define 标识符 字符串 如: #define PI 3.1415926 例 #define PI 3.1415926 main() {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.4f\nS=%10.4f\nv=%10.4f\n,l,s,v); getch(); } 9.1 宏定义 9.1 宏定义 可以用#undef命令终止宏定义的作用域。 9.1 宏定义 在进行宏定义时,可以引用已定义的宏名来层层置换。 9.1 宏定义 对程序中用“”括起来的字符串内的字符,不进行宏置换。 宏定义与定义变量的含义不同,只作字符替换,不分配内存空间。 带参数的宏定义 定义的一般形式为 #define 宏名(参数表) 字符串 如:#define s(a,b) a*b area=s(3,2); 宏展开area=3*2; 说明 #define PI 3.1415926 #define S(r) PI*r*r 当程序area=S(a); 宏展开area=3.1415926*a*a 符合题意 当程序area=S(a+b); 宏展开area=3.1415926*a+b*a+b 不符合题意 主要原因是宏替换时只是简单的字符替换,不是传递参数 解决方法 在带参数宏定义中,在参数外面加上括号 #define S(r) PI*(r)*(r) 宏展开area=3.1415926*(a+b)*(a+b) 带参的宏定义与函数的区别: 函数调用时,先求出实参表达式的值,然后代入形参。而使用带参的宏只是进行简单的字符替换。 函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。 对函数中的实参和形参都要定义类型,且类型一致。而宏不存在类型问题。 调用函数只可得到一个返回值,而用宏可以设法得到几个结果。 使用宏次数多时,宏展开后源程序长,因为每展开一次都使程序增长,而函数调用不使源程序变长。 宏替换不占运行时间,只占编译时间。而函数调用则占运行时间(分配单元、保留现场、值传递、返回)。 指一个源文件可以将另外一个源文件的全部内容包含进来。 一般形式为 #include “文件名” #include 文件名 可以节省程序设计人员的重复劳动,即多个源程序共同包含一个文件。 常用在文件头部的被包含的文件称为“标题文件”或“头部文件”,常以“.h”为后缀。 被包含的文件内容通常有变量定义、函数声明、宏定义等。 可以包含的文件有系统头文件(.h)、用户定义头文件和源程序。 说明 一个include命令只能指定一个被包含文件,如果要包含n个文件,要用n个include命令。 如果file1.c包含file2.h,而file2.h中要用到file3.h的内容,则: 可在file1.c中定义: #include file3.h (在file2.h 前) #include file2.h 文件包含可嵌套 在file1.c中#include file2.h 在file2.h中#include file3.h 按 #include 标准方式查找 系统到存放C库函数头文件所在的目录中寻找要包含的文件。 如果为调用库函数而用#include命令来包含相关的头文件,则用尖括号,以节省查找时间 按 #include 系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。 如果要包含的是用户自己编写的文件(这种文件一般都在当前目录中),一般用双引号。 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译
您可能关注的文档
- 丁洪波“交易中的平衡智慧”.doc
- c++课程设计_凌宗仁.doc
- C++麻将算法.docx
- C.OpenXLive 开发初体验-马宁.pptx
- C10(链表).ppt
- 东坡文集.doc
- C3-选择结构.pptx
- c5(函数).ppt
- C6(数组).ppt
- C8051F学习笔记.doc
- 2025至2030酒店产业政府现状供需分析及市场深度研究发展前景及规划可行性分析报告.docx
- 2025-2030中国笔记本电脑和平板电脑行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国安乃近行业运行形势及竞争策略分析研究报告.docx
- 2025至2030中国医用显示器行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国飞机加油行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国电机启动器行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国帮助创作工具(HAT)软件行业深度研究及发展前景投资评估分析.docx
- 2025至2030增益均衡器行业市场占有率及投资前景评估规划报告.docx
- 2025至2030红茶行业市场风险投资及运作模式与投融资报告.docx
- 2025至2030中国变频功率计行业调研及市场前景预测评估报告.docx
最近下载
- 围孕期叶酸营养管理指南.docx VIP
- 口腔黏膜液体敷料对头颈癌化放疗造成口腔黏膜炎-BIOMEDICINE.PDF VIP
- 2026精品民宿酒店管家服务标准与运营SOP(含白手套查房表/入住接待/好评引导).docx
- 实体瘤疗效评价标准(RECIST1.1).ppt VIP
- 《医疗器械网络销售监督管理办法》考核试题及答案.docx VIP
- 【 数据结构与算法(天津理工大学)】智慧树网课章节测试答案.pdf VIP
- 欧盟CE认证符合性声明范本.docx VIP
- 小红书内容生态对消费者购买决策的影响机制研究.docx VIP
- 2025年专用车辆项目规划申请报告模范.docx
- 无人机培训课件.pptx VIP
原创力文档

文档评论(0)