- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 本章要点 宏定义 文件包含 条件编译 主要内容 9.1 宏定义 9.2 “文件包含”处理 9.3 条件编译 预处理命令的特点 §9.1 宏定义(1) §9.1 宏定义(2) §9.1 宏定义(3) §9.1 宏定义(4) §9.1 宏定义(5) §9.1 宏定义(6) §9.1 宏定义(7) §9.1 宏定义(8) §9.1 宏定义(9) §9.1 宏定义(10) §9.1 宏定义(11) §9.2 “文件包含”处理(1) §9.2 “文件包含”处理(2) §9.2 “文件包含”处理(3) §9.2 “文件包含”处理(4) §9.2 “文件包含”处理(5) §9.3 条件编译(1) §9.3 条件编译(2) §9.3 条件编译(3) §9.3 条件编译(4) §9.3 条件编译(5) §9.3 条件编译(6) §9.3 条件编译(7) §9.3 条件编译(8) C语言程序设计(第三版) My email:chenguot@163.com * (4)经过预处理后的程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 (5)为了与一般C语句相区别,预处理命令以符号“#”开头。 (1)用于改进程序设计环境,提高编程效率。 (2)它不是C语言本身的组成部分,不能直接对它们进行编译(因为编译不能识别它们)。 (3)必须在对程序进行通常的编译(包括词法和语法分析、代码生成、优化等)之前,先对程序中这些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。 如:⑴程序中用#define命令定义了一个符号常量A,则在预处理时将程序中所有的A都置换为指定的字符串。 ⑵程序中用#include命令包含一个文件“stdio.h”,则在预处理时将stdio.h文件中的实际内容代替该命令。 ㈠ 不带参数的宏定义 用一个指定的标识符(即名字)来代表一个字符串。其一般形式为 #define 标识符 字符串 ⑴宏定义使用户能以一个简单的名字代替一个长的字符串。 ⑵这个标识符成为“宏名”。 ⑶在预编译时将宏名替换成字符串的过程称为“宏展开”。⑷#define是宏定义命令 #include stdio.h #define PI 3.1415926 void main() { float l,s,r,v; printf(“input radius:”); scanf(“%f”,r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf(“l=%10.4f\ns=%10.4f\nv=%10.4f\n”,l,s,v); } input radius:4↙ l=25.1327 s=50.2655 v=268.0826 ⑴宏名一般习惯用大写字母表示,以便与变量名区别,但这并非规定,也可用小写字母。 ⑵使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量,同时也避免书写字符串出错。另外,可以通过改变#define命令行来更改宏名所代表的字符串。 ⑶宏定义是用宏名代替一个字符串,也就是作简单的置换,不作正确性检查,即预编译时不作任何语法检查。 ⑷宏定义不是C语句,不必在行末加分号,如果加了分号则连分号一起进行置换。 ⑸#define命令出现在程序函数的外面,宏名的有效范围为定义命令之后到本源文件结束。 如:定义数组大小,可以用 #define array_size 1000 int array[array_size]; 当该程序在另外一个场合中,需要定义更长的数组,则只要更改#define命令行即可实现,即改为 #define array_size 2000 在该场合下array_size所代表的是2000,使用宏定义,可以提高程序的通用性。 一个宏定义如下: #define PI 3.141s9 在宏替代时,不会指出该宏是错误的,只有在编译的时候,才会提示在使用宏的行存在语法错误。 ⑹可以用#undef命令终止宏定义的作用域。 ⑺在进行宏定义时,可以引用已定义的宏名,可以层层置换。 ⑻对程序中用双撇号括起来的字符串内的字符,即使与宏名相同,也不进行置换。 ⑼宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。 作用域: #define G 9.8 void main() { ┇ } #undef G f1() { ┇ } G的有效范围 #include stdio.h #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R v
您可能关注的文档
- 第4章中国的环境管理制度(第3讲).ppt
- 第4章全球市场评估中的.ppt
- 第4章商业银行现金资产管理[1].ppt
- 第4章国际金融机构.ppt
- 第4章宏观经济学复习总结及课后答案.ppt
- 第4章指法操作和汉字输入.ppt
- 第4章租赁高级会计学.ppt
- 第4章药用功能高分子.ppt
- 第4章第三部分之一.ppt
- 第4讲No.7信令的电话用户部分.ppt
- 基本面选股组合月报:大模型AI选股组合本年超额收益达6.60.pdf
- 可转债打新系列:安集转债,高端半导体材料供应商.pdf
- 可转债打新系列:伟测转债,国内头部第三方IC测试企业.pdf
- 联想集团PC换机周期下的价值重估.pdf
- 计算机行业跟踪:关税升级,国产突围.pdf
- 科技类指数基金专题研究报告:详解AI产业链指数及基金布局.pdf
- 计算机行业研究:AIAgent产品持续发布,关税对板块业绩影响较小.pdf
- 民士达深度报告:国内芳纶纸龙头,把握变局期崛起机遇.pdf
- 社会服务行业动态:全球首张民用无人驾驶载人航空器运营合格证落地,霸王茶姬冲击美股IPO.pdf
- 通信行业研究:特朗普关税令落地,长期看好国产算力链.pdf
最近下载
- 2025年贵州省毕节地区黔西县林泉镇招聘社区工作者考前自测高频考点模拟试题含答案解析.docx VIP
- 高中的地理学业水平考试知识点.(全).doc
- 冀教版一年级数学下册课件 第4单元 阳光课间活动.pptx VIP
- 学校劳动教育清单(含小学初中高中).docx
- 玻璃幕墙施工方案.doc VIP
- 水的奇幻旅程.pptx VIP
- 辅警岗位知识培训课件.pptx
- 专题03 遇到角平分线如何添加辅助线模型-2025年中考数学常见几何模型全归纳之模型解读与提分精练(江西专用)(原卷版).docx
- 23秋国开电大《比较初等教育》终结性考核大作业参考答案.pdf
- 【教案】交流与传承——东西文化碰撞中的艺术嬗变+教学设计高中美术人美版(2019)美术鉴赏.docx VIP
文档评论(0)