第9章-预处理定义.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章-预处理定义

第九章 本章要点 宏定义 文件包含 条件编译 主要内容 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

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档