C语言程序设计 高等教育应用型本科计算机类课程规划教材 江义火 PPT讲稿第8章 编译预处理.pptVIP

C语言程序设计 高等教育应用型本科计算机类课程规划教材 江义火 PPT讲稿第8章 编译预处理.ppt

  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文档。上传文档
查看更多
2.第二种形式 #ifdef 宏名 程序段1 #else 程序段2 #endif 该语句的功能是,当宏名已经定义过,则编译程序段1,否则编译程序段2。同样,其中#else部分是可以选择的,有时它也可以没有。 * 例8.8 密码输出设置。 #include stdio.h #include conio.h #define DEBUG /*此行,可以根据需要增删*/ void main() { char pw[60]; int i=-1; printf(请输入口令:); do{i++; if(i60) { printf(\n输入口令过长!); exit(0); } * pw[i] = getch(); #ifdef DEBUG putchar(pw[i]); #else putchar(*); #endif }while(pw[i]!= \n); } * 程序经过编译、连接、运行,输入123456,按回车键。则屏幕显示: 请输入口令:123456↙ 如果将例8.8源程序中第四行的“#define DEBUG”删除,重新编译、连接、运行,输入123456,按回车键。则屏幕显示: 请输入口令:******↙ 3.第三种形式 #ifndef 宏名 程序段1 #else 程序段2 #endif 与第二种形式的功能相反,表示当宏名没有定义过,则编译程序段1,否则编译程序段2。同样,其中#else部分是可以选择的,有时它也可以没有。 * 本章小节 1.为了扩充C语言的功能,C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。 2.宏定义是用一个标识符来表示一个字符串,这个字符串可以是常数、表达式、格式串等。编译预处理时,在该宏定义命令之后出现的所有宏名,均被替换成代替字符串。 3.宏定义和函数定义都可以带参数,但二者之间有着本质的区别,在调用宏时是直接将实参字符串替换形参,而函数调用时实参与形参之间是“值传递”的形式。带参宏定义的形式参数不分配内存单元,因此不必作类型定义。 * 4.在宏定义时为避免不必要错误的发生,一般将宏定义中的字符串用圆括号括起来。在有参宏定义中的形式参数两边也应加圆括号,且不能在宏名与左圆括号之间留有空格。 5.文件包含是指一个源文件可以将另一个源文件的全部内容包含进来。通过文件包含可以将多个模块共用的数据(如符号常量和数据结构)或函数,集中到一个单独的文件中,并最终编译形成一个目标文件。 6.条件编译允许根据条件来选择要编译的程序段,因而产生不同的目标代码文件,这对减少内存的开销和增强程序的可移植性都是很有用的。 * * C语言程序设计 江义火 主编 ISBN:978-7-5611-5634-6 大连理工大学出版社 第8章 编译预处理 C 语言程序设计 第8章 编译预处理 8.1 预处理引例 8.2 宏定义 8.3 文件包含 8.4 条件编译 本章小节 * 8.1 预处理引例 例8.1使用带参宏,实现求三个数中的最大数并输出。 /* 源文件名:AL8_1.c */ #include stdio.h #define MAX(a,b) (ab)?a:b void main() { float num1,num2,num3,max; printf(请输入三个数,数之间用空格隔开:\n); scanf(%f%f%f,num1,num2,num3); max = MAX(num1,num2); max = MAX(max,num3); printf(最大数为:%f,max); } * 程序运行情况如下: 请输入三个数,数之间用空格隔开: 5.2、4.8、7.9↙ 最大数为:7.900000 8.2 宏定义 C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等。合理地使用预处理功能会使编写的程序更便于阅读、修改、移植和调试,也有利于模块化程序设计。 * 8.2.1 无参宏定义和宏替换 1.无参宏定义 无参宏定义的格式: #define 标识符 字符串 C语言中,以“#”开头表示这是一条预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。 * 例8.2 无参宏定义示例 #include stdio.h #define PI 3.1416 #define R 2.0 #define S PI*R*R #define PRN printf #define BEGIN ma

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档