第7章 编译预处理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 编译预处理 * * 7.1 宏 替 换 7.2 文件包含 7.3 条件编译 预处理命令均以“#”开头,末尾不加分号。 7、1 宏替换 一、不带参数的宏替换 1、格式:#define 宏名 宏体 其中宏名为C语言的标识符,一般用大写的字母表示,宏体可以包含任意字符。 2 、预处理时将程序中所有出现的宏名用宏体替换。不带参数的宏常用于定义符号常量。 例如: #define PI 3.1415926 #define AREA PI*r*r #define CITY “Jinan” 3、说明: ①、宏替换可提高程序的可读性,便于程序的修改。 ②、宏体不仅可以是数字,也可是其它字符,还可以引用已定义的其它宏名。 ③、宏的作用域为定义该宏之后,到本源文件结束。 ④、可以用#undef预处理命令提前结束宏的作用域。 例如: #undef PI ⑤、注意:如果宏名放在双引号内,则不予替换。 ⑥、宏定义后不能有分号“;”。 二、带参数的宏替换 1、定义:#define 宏名(形式参数表) 宏体 宏体为包含型参的参数表达式。 如: #define S(a ,b) a*b 2、引用:宏名(实际参数表) 如: m=S(x ,y); 对带参数的宏,不仅对宏名进行替换,而且对参数进行替换. 如上例:x替换a;y替换b。替换后此语句为m=x*y; 4、定义较长的宏,一行写不下可在本行末使用续行符“\”。 例如:#include stdio.h #define PI 3.14 #define circum(r) 2*PI*r #define area(r) PI*r*r main() { float ra,c,a; scanf(“%f”,ra); c=circum(ra); a=area(ra); printf(“ra=%f,c=%f,a=%f”,ra,c,a); } c=2*3.14*ra a=3.14*ra*ra 注意:宏替换,是在程序编译之前处理的,宏替换仅进行字符的替换,不进行运算。 5、带参数的宏替换与函数有些相似,也称类函数宏,但有所不同: 1)宏替换产生的程序代码比使用函数时长。宏替换通常适用于简短的表达式。 2)宏替换只是简单替换,不需要进行参数传递、保护现场、等操作,其执行速度比函数快。 3)宏替换不存在返回值类型和参数类型的问题。 4)因为宏替换仅仅是简单的字符替换,使用宏会产生副作用。 A、定义宏时,参数和宏体最好用括号括起来。 如:#define square(n) n*n 调用时 s=aquare(a+1) 则变成了s=a+1*a+1;即s=2*a+1; 与预期效果不同。 最好写成#define square(n) ((n)*(n)) 这样替换后为s=((a+1)*(a+1)) B、定义带参数的宏时,宏名和左括号之间不能有空 格,否则被认为是无参数的宏. 如:#define S (a ,b) a*b C、对宏的定义,只是进行字符的替换,不进行语法检查,宏体中的错误,在正式的编译阶段才能检查出来,而且指出的错误处在引用该宏的行,实际错误可能在宏定义处。 7、2 文件包含 是指一个源文件将另一个指定的文件的全部内容包含进来。其一般形式为: #include 文件名 或 #include “文件名” 说明: 被包含的文件的后缀通常为“.h”。 第一种形式:到系统标准目录中搜索该文件。 第二种形式:首先到当前目录中搜索该文件,如找不 到则到系统标准目录中去搜索该文件。 标准目录通常在编译系统的include目录中。 通常包含系统标准头文件采用第一种形式,自己编写 的头文件采用第二种形式。 编程时,用户可以编写自己的头文件,其中也可以包含另外的头文件,文件包含可以嵌套。 编制有多个源文件组成的程序时,可把各个源文件共同使用的函数声明、宏定义、数据类型的定义和全局变量的声明等写成独立的头文件,在各源程序中包含该头文件。减少重复、易修改。 注意头文件保存时扩展名为.h 例如:输入一个句子,统计单词个数。 首先编写一个头文件: /*hong.h*/ #include stdio.h #define TRUE 1 #define FAL

文档评论(0)

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

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

1亿VIP精品文档

相关文档