网站大量收购独家精品文档,联系QQ:2885784924

第06章_编译预处理.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
第06章_编译预处理

第6章 编译预处理; 本章要点:;C++语言提供的编译预处理,就是在C编译系统对程序进行编译之前,先对程序中特殊的部分进行预处理,然后再将处理的结果和源程序一起进行编译。 C++语言的预处理有:宏定义和文件包含。;6.1.1 不带参数的宏定义 用一个标识符来替代一段文本,它的一般格式为: C++语言预处理的格式以#开头,并且一行预处理语句的前面只允许出现空白字符。 当文件中出现标识符时,都用替换文本代替。对于上面这条语句,就是将文件中所有的MAX_NUMBER都替换成10,用这种方法使程序员能把在程序中经常用的数值或字符串用一个常量替代,以后如果要改变它,只需在宏定义中改就可以,而不必在源文件中所有出现它的地方改动。另外把数值用有意义的标识符替代,也有助于阅读程序。;不带参数的宏定义的使用: 例6.1 输出一个由字符“*”绘制的三角形。 程序清单 C06_01.cpp /*不带参数的宏定义的使用*/ /*用*绘制一个直角三角形*/ #include iostream.h #define MAX_NUMBER 7 void main() { int i, j; for(i = 0; i MAX_NUMBER; i++) { for(j = 0; j = i; j++) cout *; cout \n; } };输出结果 * ** *** **** ***** ****** ******* 程序中的宏定义语句: #define MAX_NUMBER 10 把MAX_NUMBER定义为数值10,在预处理时,就将语句: for(i = 0; i MAX_NUMBER; i++) 中的MAX_NUMBER替换成10。宏展开后,这条语句就变成了: for(i = 0; i 10; i++);使用宏定义应该注意如下几点: 1)宏名一般用大写,以便与一般变量区别; 2)宏定义不是一般的C语句,行尾不用加分号“;”; 3)宏定义的有效范围是从定义到源文件结束或宏定义的取消; 4)如果想中止宏定义,可用#undef命令。例如: #define MAX_NUMBER 10 func () { …… /* 在其中可以使用 MAX_NUMBER */ } #undef MAX_NUMBER int MAX_NUMBER = 5; /* 可以再次使用此名称定义一个变量 */ …… 在上面的程序段中,开始宏定义的MAX_NUMBER只在#undef之前有效,之后MAX_NUMBER无效,可被重新定义。;6.1.2 带参数的宏定义 宏定义还能进行带参数的替换,其定义的格式为: #define PI 3.1415926 #define S(r) PI * (r) * (r) …… area = S(10); 其中语句: #define S(r) PI * (r) * (r) 宏定义了一个计算圆面积的公式。 宏定义中的r作为形参,程序中用具体的数值或变量代替r,就可以进行圆面积的计算。;例6.2 定义一个计算圆面积的宏,此宏带有参数。 程序清单 C06_02.cpp /*用带参数的宏定义计算圆面积*/ #include iostream.h #define PI 3.1415926 #define S(r) PI * (r) * (r) void main() { double area, m; cout 请输入圆的半径:\n; cin m; area = S(m); cout 圆面积S = area endl; };程序先用宏定义了PI为3.1415926,在第二句宏定义中: #define S(r) PI*(r)*(r) 可使用已定义的宏PI。 在语句:area = S(m);中,出现S(m),被替换为:area = PI * (m) * (m),由于PI也被宏定义过,再被替换为:area = 3.1415926 * (m) * (m)。;使用宏时还需要注意以下几点: 1)进行宏定义时,可以使用已定义的宏名; 2)使用带参数的宏定义时,只要用实参代替宏定义中的形参即可; 3)实参可以是数值、变量,也可以是表达式。 比如在上例中,我们用一个表达式a + b来做宏定义S(r)的实参,它将代替形参r,S(r)被替换为S(a + b),进一步被替换为S(a + b) = PI * (a + b) * (a + b)。;C++语言允许在一个程序中有数个源文件,通过#include语句可以在一个文件中包含一个或多个其他的文件,这样可以使用被包含文件中定义的宏、全局变量和函数等。 #include 语句的格式为: 二者的区别是: 1、用双引号文件名形式,编译系统先在源文件目录中寻找指定文件,若找

文档评论(0)

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

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

1亿VIP精品文档

相关文档