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

C++程序设计第9章 编译预处理.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++程序设计第9章 编译预处理.ppt

第 9 章 编译预处理 主要内容 9.1 宏定义 所谓“宏”就是将一个标识符定义成一个字符串符,完成定义的命令称为“宏定义”或预处理命令,其中,“标识符”称为“宏名”;当定义了宏名后,在源程序中就可以“引用宏”。带有宏的程序,源程序开始编译前,系统将会把源程序清单中所引用的宏名替换成对应的一串字符,然后再编译源程序。替换的过程称为“宏替换”,也称为“宏展开”。 9.1.1 不带参数的宏定义 #define 宏名 字符串 功能:定义宏名对应于一串字符。 关于宏定义注意以下几点: (1)字符串不带双引号。 (2)宏名的前后应有空格,以便准确的辨认宏名。 (3)C预处理命令都是以换行符(\n)结尾的,即每条C预处理命令都占用一行;本命令不是语句,其后不要跟分号;。 (4)在字符串中如果出现运算符,要注意替换后的结果,通常可以在合适的位置上加括号。 【例9.1】求园的周长、面积和球的体积。 【例9.1】求园的周长、面积和球的体积。 #define PI 3.14159 void main( ) { float l,s,r,v; coutinput redius:endl; cinr; l=2.0*PI*r; s=PI*r*r; v=3.0/4*PI*r*r*r; coutl=lendls=sendlv=vendl; } (5) 宏定义也有定义域,它的定义域是从开始定义处到本程序文件的结尾。所以一般都将宏定义放在源程序开头。如果终止使用宏,可以使用编译预处理命令“#undef”来终止宏的定义域,即宏的定义域应该是从定义处到文件尾或命令#undef出现处。如下例, #define PI 3.14159 // 定义宏PI为 3.14159 ┆ s=PI *r *r; //此处宏引用是正确的 #undef PI // 取消宏 ┆ s=PI * r * r; (6)在宏定义的一串字符中可以出现已经定义过的另一个宏名,称为嵌套宏定义。例如, #define PI 3.14159 #define S(r) PI * r* r ┆ printf (“S=%f\n”,S); 最后一个语句进行宏替换后的过程是先将宏名“S”替换成“PI * r * r”,然后再将其中的宏名“PI”替换成“ 【例9.2】嵌套宏定义。 #define R 3.0 #define PI 3.14159 #define L 2*PI*R #define S PI*R*R void main( ){ coutL=LENDLS=Sendl; // 宏展开后为://printf(L=%f\nS=%f\n,2*3.14159*3.0,3.14159*3.0*3.0) } 使用宏的目的有两面个: (1) 提高程序效率,在修改数据时只改写一次#define命令,就可以将全部程序中的宏都得到修改。C语言不可以定义动态数组,如果数组的长度用符号常量定义就可以实现动态定义。例如, #define N 1000 int array[N]; (2) 提高程序的通用性,宏名并不代表内存变量,不分配内存。 (3) 在§2.3.4中介绍过,在C++中使用“常变量”带替不带参数的宏。例如,const int n=3; int array[n]; //定义数组的长度为n 【例9.3】要求编写一个程序,从输入的N个实数中寻找并输出最大数和最小数。 #define N 5 //可以用常变量定义数组的长度 void main() { float f[N],max,min; int i; for(i=0;iN;i++) cinf[i]; max=min=f[0]; for (i=0;iN;i++){ if(maxf[i]) max=f[i]; //判断并保存当前最大数 if(minf[i]) min=f[i]; // 判断并保存当前最小数 } coutMAX=maxendlMIN=minendl; } 9.1.2 带参宏的定义和引用 #define 宏名(形参表)字符串 功能:定义宏名对应于一串字符。 其中,形参是用逗号分隔形式

文档评论(0)

资料 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档