第九讲编问译预处理.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九讲编问译预处理

第九讲 编译预处理 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。 主要内容 9.1 宏定义与符号常量 9.2 文件包含 9.3 条件编译 9.1 宏定义与符号常量 在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。 9.1.1 无参宏定义 9.1.2 符号常量 9.1.3 有参宏定义 9.1.1 无参宏定义 1.无参宏定义的一般格式 #define 标识符 语言符号字符串 其中:“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表示,以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串等。 2.使用宏定义的优点 (1)可提高源程序的可维护性 (2)可提高源程序的可移植性 (3)减少源程序中重复书写字符串的工作量 [例1] 宏替换的应用 #define M (y*y*y+2*y+1) //宏定义 #include stdio.h void main() { int s,y=3; s=M*M+(y-2)*(M-1)+M; printf(“\ns=%d”,s); } 3.说明 (1)宏名一般用大写字母表示,以示与变量区别。 (2)宏定义不是C语句,所以不能在行尾加分号。 (3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。 (4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到本文件结束。通常,宏定义命令放在文件开头处。 (5)在进行宏定义时,可以引用已定义的宏名 。 (6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。 9.1.2 符号常量 在定义无参宏时,如果“语言符号字符串”是一个常量,则相应的“宏名”就是一个符号常量。 恰当命名的符号常量,除具有宏定义的上述优点外,还能表达出它所代表常量的实际含义,从而增强程序的可读性。 符号常量示例 #define EOF -1 /*文件尾*/ #define NULL 0 /*空指针*/ #define MIN 1 /*极小值*/ #define MAX 31 /*极大值*/ #define STEP 2 /*步长*/ [例2] 输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。 #define PI 3.1415926 /*PI是宏名,3.1415926用来替换宏名的常数*/ main() { float radius,length,area,volume; printf(Input a radius: ); scanf(%f,radius); length=2*PI*radius; /*引用无参宏PI求周长*/ area=PI*radius*radius; /*引用无参宏PI求面积*/ volume=PI*radius*radius*radius*3/4; /*引用无参宏PI求体积*/ printf(length=%.2f,area=%.2f,volume=%.2f\n, length, area,volume); } 9.1.3 有参宏定义 1.带参宏定义的一般格式: #define 宏名(形参表) 语言符号字符串 2.带参宏的调用和宏展开 (1)调用格式:宏名(实参表) (2)宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中、相应形参字符串,非形参字符保持不变。 有参宏定义示例 例3:#define M(y) y*y*y+2*y+1 //宏定义 … a=M(10); //宏调用 即a=10*10*10+2*10+1; 有参宏定义实例 例4:利用带参数的宏实现简单函数的功能 #define M

文档评论(0)

180****5152 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档