




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章预处理预处理宏定义宏定义文件包含文件包含条件编译条件编译编译预处理编译预处理编译编译连接连接执行执行define#include为了和一般为了和一般c语句相区别,这些命令以符号语句相区别,这些命令以符号#开头。开头。用标识符来代表一个字符串(给字符串取个名字)。用标识符来代表一个字符串(给字符串取个名字)。c语言用语言用“#define”进行宏定义。进行宏定义。c编译系统在编译前将编译系统在编译前将这些标识符替换成所定义的字符串。这些标识符替换成所定义的字符串。概念概念格式格式define 标识符标识符 字符串字符串相关相关概念概念宏名:宏定义中的标识符称为宏名:宏定义中的标识符称为“宏
2、名宏名”。宏展开:在预编译时将宏名替换成字符串的过程称宏展开:在预编译时将宏名替换成字符串的过程称 为为“宏展开宏展开”。 #define pi 3.1415926#include #define pi 3.1415926 void main( ) float radius,length,area,volume; printf(input a radius: ); scanf(%f,&radius); length=2*pi*radius; area=pi*radius*radius; v o l u m e = p i * r a d i u s * r a d i u s * r a d
3、i u s * 3 / 4 ; printf(length=%.2f,area=%.2f,volume=%.2fn, length, area, volume);例例7.1 输入圆的半径,求圆的周长、面积和球的体积。要求输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。使用无参宏定义圆周率。说明说明#define pi 3.14;#define pi 3.14;area=piarea=pi* *r r* *r;r;area=3.14;area=3.14;* *r r* *r;r;宏展开宏展开#define g 9.8#define pi 3.14 int f1( ) #und
4、ef gvoid main( ) g的有的有效范围效范围pi的有的有效范围效范围#define r 3.0#define pi 3.14 #define l 2*pi*r#define s pi*r*rvoid main() printf(“l=%fns=%fn”,l,s);宏展开宏展开printf(“l=%fns=%fn”,2*3.14*3.0 , 3.14*3.0*3.0);带参数的宏定义不只是进行简单的字符串替带参数的宏定义不只是进行简单的字符串替换,还要进行参数替换。换,还要进行参数替换。格式格式概念概念define 宏名(参数表)宏名(参数表) 字符串字符串类似函数头,但是没类似函数
5、头,但是没有类型说明,参数也有类型说明,参数也不要类型说明不要类型说明展开置展开置换规则换规则按照按照#define#define命令行中指定的命令行中指定的“字符串字符串”从左到从左到右进行置换(扫描置换)。如果串中包含宏定义右进行置换(扫描置换)。如果串中包含宏定义中的形参,则将程序中相应的实参代替形参,其中的形参,则将程序中相应的实参代替形参,其它字符原样保留,形成了替换后的字符串。它字符原样保留,形成了替换后的字符串。举例举例#define s(a,b) a*barea=s(3,2);宏展开宏展开area=3*2;例例7. 2 用带参数的宏定义表示圆的面积。用带参数的宏定义表示圆的面积
6、。#define pi 3.14#define s(r) pi*r*r void main() float a,area; a=3.6; area=s(a); printf(“r=%fnarea=%fn”,a,area); area=3.14*a*a;宏展开宏展开说明说明宏展开宏展开area=3.14*a+b*a+b;不再是求不再是求面积了。面积了。此时此时s是符号常量(不带参的宏是符号常量(不带参的宏名),它代表字符串名),它代表字符串“(r) (r) 3.143.14* *r r* *r r”。2 2、定义带参数宏时还应该注意宏名与参数表之间不能有、定义带参数宏时还应该注意宏名与参数表之间
7、不能有空格。有空格就变成了不带参数的宏定义。空格。有空格就变成了不带参数的宏定义。 例:例:define define s (r) 3.14s (r) 3.14* *r r* *r r概念概念格式格式 #include “ #include “文件名文件名”或或 #include #include 所谓所谓“文件包含文件包含”处理是指一个源文件可以将另处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。文件包含到本文件之中。示意图示意图 #include ab 包含包含file2.cfile1.cabfile1.c说明说明例例7.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能照明在医疗手术室照明中的应用考核试卷
- 矿物干燥剂生产考核试卷
- 森林植被恢复与重建考核试卷
- 糖尿病患者护理查房 2
- 一年级上册数学口算(每天5分钟60题)
- 2025年中考初三学业质量检测(一)物理模拟题答案
- 统编版语文五年级下册第9课《古诗三首》精美课件
- 三亚中瑞酒店管理职业学院《商贸英语听说上》2023-2024学年第二学期期末试卷
- 辽宁省朝阳市双塔区2024-2025学年五下数学期末复习检测模拟试题含答案
- 山东省济南市济阳县2025届初三毕业班模拟考试(五)英语试题含答案
- 《工会会计制度》管理系统升级及使用
- 医院患者诊疗信息安全风险评估和应急工作机制制定应急预案XX医院患者诊疗信息安全风险应急预案
- 计算机科学与技术本科生毕业论文——基于Web的医院预约挂号系统的设计与实现
- 老年智能手环产品需求说明书(PRD)
- T∕AOPA 0018-2021 直升机临时起降场选址与建设规范
- 高考英语高频688词汇(核心版本)
- 七八年级人教古诗词集锦
- 涪陵榨菜集团盈利能力分析工商管理专业
- 35kv配电系统继电保护方案设计(共33页)
- 中国收藏家协会个人会员入会申请表
- 医院处方笺模板
评论
0/150
提交评论