- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[2018年必威体育精装版整理]10编译预处理
第十章 在C++语言中包含一类特殊的命令(或称指令),这类特殊命令的作用不是直接实现程序的功能,而是为C++语言编译系统提供信息,这些信息将通知C++语言编译器在对源程序进行正式编译之前应该做什么,这一类特殊的命令被称为“编译预处理命令”。 C++语言的预处理程序是C++语言编译系统的组成部分,它负责分析和处理程序中使用的几种预处理命令,由于预处理程序对这些预处理命令的处理是在编译程序的其它部分处理之前进行的,因此,把这些命令称为预处理命令。 C++语言提供的预处理命令有如下几种: (1)宏定义 (2)文件包括 (3)条件编译 (4)其它(主要包括#line、#pragma等) 注 意: 为了与一般的C++语言语句相区别,所有的预处理命令都是以符号“#”开始的。 10.1 宏定义 C++语言的宏定义可以分为两种形式:一种是符号常量定义,另一种是带参数的宏定义。 1 .符号常量定义 一般来讲,程序中所使用的常量(或称常数)都具有一定的意义,但如果在程序中直接使用常量本身,却很难看出它的意义。为了提高程序的可读性,C++语言提供了用于定义符号常量(即用一个符号来代替一个常量)的预处理语句。 符号常量的定义 #define 符号常量名 字符串 在程序中,凡是出现符号常量名的地方,经过编译预处理程序的加工后,都被替换成它所对应的字符串。这一替换过程被称为宏展开。 例 如 #define ESC 0x1B 显然,当ESC的编码值有变化时,只要修改宏定义语句即可,而程序的其余部分则不需要做任何修改,这样,利用宏定义编写的程序,将有助于程序的调试和移植。 【例10.1】从键盘输入不超过100个字符,并统计其中英文字母(不区分大小写)的个数,直到输入的字符为*或输入的字符个数超过100为止。 #include stdio.h #define MAXnum 100 void main( ) { int i,count=0; char c; for(i=0; iMAXnum; i++) { c=getchar( ); if(c==*) break; if(c = a c = z || c=A c=Z) ++count; } printf(Count=%d,count); } 说 明 程序中把要统计的英文字母的个数定义为符号常量MAXnum,这样,在以后要修改需要统计的字母个数时,只要修改MAXnum的值即可。 在使用宏定义时,需要注意如下几个问题: (1)预处理程序对符号常量的处理只是进行简单的替换工作,不作语法检查,如果程序中使用的预处理命令有错,只能在真正的编译阶段检查出来。 (2)如果不是特殊需要,预处理命令的结尾不应有分号,如果加了分号,则将连同分号一起替换。 例 如 #define ESC 0x1B; … if(c==ESC) break; 经过宏展开后,其中的if语句将变为: if(c==0x1B;) break; (3)程序中出现的由双引号括起来的字符串,即使和符号常量名相同,也不进行宏替换。 2 .带参数的宏定义 使用#define命令来定义符号常量时,编译预处理程序只是简单地进行字符串替换工作,如果用#define命令定义一个带参数的宏,则编译预处理程序对源程序中出现的宏,不仅进行字符串替换,而且还进行参数替换。 带参数的宏定义 #define 宏名(参数表) 字符串 计算圆的面积的宏定义可如下所示: 如果源程序中有如下赋值语句: float S; … S=AREA(3); 则经过宏展开后,将把3.1416*3*3的值赋给浮点型变量S。 【例10.2】从键盘输入两个整数,并把其中的较大值显示出来。要求利用宏定义来编程序。 在使用带参数的宏定义时,需要注意如下几个问题: (1)一般来讲,对宏定义字符串中的参数都要用括号括起来,整个字符串部分也应该用括号括起来,这样,才能够保证在任何替代情况下,总是把宏定义作为一个整体来看待,并能获得一个合理的计算顺序,否则,经过宏展开后,有可能出现意想不到的错误。 例如,下面的宏定义是用于求平方值的: (2)不难看出,带参数的宏定义也可以由函数来实现
您可能关注的文档
- [2018年必威体育精装版整理]09第四章抽样与参数估计抽样分布01.ppt
- [2018年必威体育精装版整理]09土木工程(专业)概论(罗福午)-3基础工程.ppt
- [2018年必威体育精装版整理]09课堂教学的有效设计.ppt
- [2018年必威体育精装版整理]09道生一——谈对数字的迷信.doc
- [2018年必威体育精装版整理]09贪婪策略.ppt
- [2018年必威体育精装版整理]09采矿弹性力学基础第1章绪论.ppt
- [2018年必威体育精装版整理]09食品理化检验技术,第三章水分、灰分.ppt
- [2018年必威体育精装版整理]0f72b5c5-4bcb-4306-a09c-4badaa6d1730_《2011年山西省远程教育全员培训小学数学专业课作业.doc
- [2018年必威体育精装版整理]0ol-zxdy.doc
- [2018年必威体育精装版整理]0~6岁儿童分阶营养指南.ppt
- [2018年必威体育精装版整理]10继电接触器控制系统.ppt
- [2018年必威体育精装版整理]10讲包图构件图和部署图.ppt
- [2018年必威体育精装版整理]10质点运动微分方程wy.ppt
- [2018年必威体育精装版整理]10输水建筑物.doc
- [2018年必威体育精装版整理]10采煤《液压与气动技术》课程标准(吴卫东).doc
- [2018年必威体育精装版整理]10运输问题模型.ppt
- [2018年必威体育精装版整理]10集合函数概念.ppt
- [2018年必威体育精装版整理]10量与单位.ppt
- [2018年必威体育精装版整理]10钻展基础知识讲解1.pptx
- [2018年必威体育精装版整理]10静电场1(库仑定律、高斯定理).ppt
文档评论(0)