《C语言程序设计(第五版)》-第8章编译预处理.ppt

《C语言程序设计(第五版)》-第8章编译预处理.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 编译预处理;1.介绍宏定义的两种形式 2.介绍文件包含的使用方法 3.介绍条件编译的概念;本章教学目的: 掌握宏定义的两种形式,掌握文件包含的使用方法了解条件编译的概念。 本章教学重点:宏定义的两种形式,文件包含的使用方法。 本章教学难点:带参数的宏定义。;主要内容:;编译预处理是指一些行首以#开头的特殊语句。在对程序进行通常的编译之前,必须先对程序中这些特殊的命令进行“预处理”,即根据预处理命令,对程序作相应的处理。 经过预处理后程序就不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。;C语言与其它高级语言的一个重要区别就是可以使用预处理命令和具有预处理的功能。;8.1 宏定义;示例代码如下: #define SIZE 1000 #define PI 3.1415926 #define FORMAT "%d,%d,%d\n" 用标识符SIZE来代替字符串1000, 用标识符PI来代替字符串3.1415926, 用标识符FORMAT来代替字符串"%d,%d,%d\n", 在编译预处理时,将程序中在该命令以后出现的所有的SIZE用1000代替、PI用3.1415926代替、FORMAT用"%d, %d, %d\n"代替。这种方法使用户能够以一个简单的名字代替一个长的字符串,可以减小重复编程工作量,而且不容易出错。;把定义时所用的标识符称为“宏名”,即SIZE、PI和FORMAT都是宏名。在预编译时将宏名替换成字符串的过程称为“宏展开”。 注意: 宏名通常用大写字母表示。定义宏与定义变量的含义不同,宏定义只是作字符替换,并不给宏名分配内存空间。 ;例8.1使用宏来计算若干个数组元素的和。 #include <stdio.h> #define SIZE 100 int main() {int i,sum=0, data[SIZE]; for(i=0;i<SIZE;i++) {scanf("%d", &data[i]); sum=sum+data[i]; } printf("sum=%d\n",sum); return 0; };说明: (1) 定义宏的目的是提高程序的可读性和通用性,便于程序的修改。例如,若要把例8.1中数组data的元素个数改为200,则只要将“# define SIZE 100”中的100改为200即可,程序中的其它语句均不用修改。 (2) 不要在宏定义的行末加分号,因为宏定义不是C语句,加分号后,会将分号也作为字符串的组成部分,宏展开后可能出现错误。;说明: (3)宏定义可以出现在程序的任何位置。一般位于文件开头,写在函数的外面。 宏名的有效范围是从定义处到本文件结束。但可以用#undef命令终止宏定义的作用域。示例代码如下: #define PI 3.1415926 int main() { … #undef PI … } 由于“#undef”的作用,使得PI的作用范围在“#undef”处终止。;说明: (4)宏定义是用宏名代替一个字符串,凡在宏定义有效范围内的宏名都用该字符串代替,但要注意:双引号内的与宏名相同的字符串不认为是宏名,不进行替换。 示例代码如下: # define SIZE 1000 … printf("SIZE"); 此程序段将显示SIZE,而不是1000。;说明: (5)可以引用前面已经定义的宏名来定义新的宏,示例代码如下: #define I1 30 #define I2 60 #define J I1+I2 #define K J*2+J/2+I2 这里,J引用了I1和I2,K引用了J和I2。 注意K展开是:30+60*2+30+60/2+60, 不要以为是:(30+60)*2+(30+60)/2+60。 除非前面的定义是:#define J (I1+I2)。 ; 带参数的宏定义的一般格式如下: #define 标识符(形参表) 字符串 带参数的宏展开时,需要进行参数替换。宏定义中形参表中的形参,在程序中将用实参替换。示例代码如下: #define PI 3.14159 #define V(r) 4*PI*r*r*r/3 V(r)为带参数的宏。例如,在程序中使用V(6)时,

文档评论(0)

浪漫唯美-文档菜鸟 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档