C语言程序设计课件:编译预处理.ppt

C语言程序设计课件:编译预处理.ppt

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

编译预处理宏定义文件包含条件编译基本内容:宏定义宏定义:是用一个指定的名字来代表一个常量表达式或字符串,其复杂形式是带参数的宏。1.符号常量定义(1)程序中常用到一些特别的量,如用0或1作条件判别量,用-1表示文件结束,用2147483647表示最大4字节整数231-1等,它们都常定义成宏名。如:#defineNO0#defineYES1#defineEOF(-1)(2)宏名可定义为具有一定精度要求的float和double类型值。如:#definePI3.14159#defineEPS1.0e-9(3)宏名还可以定义为数组中最后一个元素的地址a[MAX-1]。如:#defineMAX100#defineMAXPa[MAX-1](4)利用宏定义还可以把C语言语句的书写格式写成程序员习惯的格式。如:预处理后:#definethenend{…#definebegin{elseif(ab) #defineend;}begin{a:=b;#define:==c:=b;d:=(a+b)/2;{...D:=(d*c)/2;}if(ab)thenendelse begin…{c:=b;a:=b;}d:=(a+b)/2; d:=(a+b)/2;}…}利用宏定义将C写成PASCAL的格式对于宏需要注意的问题:(1)宏名习惯上用大写字母表示,表示与一般变量名相区别。但这并非C语言的规定,也可以用小写字母。(2)宏定义不是C语句,不必在行末尾加分号。若加,则会连分号一些进行置换,可能会出现语法错误。(3)字符串或字符常量中若有与宏名重名的,预处理程序一律不将它们作为宏名对待,更不进行代换。例如:#defineYES1…printf(“YES\n”);输出的是YES,而不是1。(4)在宏定义中,可以引用已经定义的宏名,可以进行层层代换。例如:#definePI3.14159#defineR3.0#defineL2*PI*R#defineSPI*R*R(5)宏定义的有效范围为定义点到该源文件结束,还可以用#undef命令终止宏定义的作用域。例如:#defineP100main(){…}#undefPf1()…2.带参数的宏定义所谓带参数的宏定义是指宏名后带有形参表的宏定义。格式:#define宏名(形参表)表达式说明:宏定义中的形参在以后的程序中将以实参替换。置换过程:在程序中若有带参数的宏,则按#define命令行中指定的字符串从左到右进行置换。如果串中包含宏中的形式参数,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则原样保留。常见的带参数宏定义的用法:(1)带参数的宏定义常用来代替一些简短的表达式。例如:#defineMIN(x,y)((xy)?x:y)(2)带参数的宏定义也可以直接引用已定义过的宏定义,即实现宏定义的嵌套。例如:#defineSQ(x)(x*x)#defineFIFTH(x)CUBE(x)*(SQ(x))预处理程序对每个宏名展开代换,直到件中不再有宏名为止。(3)带参数的宏定义可以简化格式打印函数printf的格式,提高程序的可读性。例如:#defineNLputchar(‘\n’)

文档评论(0)

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

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档