- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计基础(C语言)wh 第 九 章 预处理和标准函数 本章内容 9.1 预处理命令 9.2 输入输出标准函数 9.3 自定义头文件设计的原则 小 结 9.1 预处理命令 作用:编译之前,由编译预处理程序对源程序做一些处理,将它们转换成能由C编译程序接受的正文。 种类: 宏定义 文件包含 条件编译 格式: “#”开头 占单独书写行 以换行符结尾 9.1.1 宏定义 1. 简单的宏定义 简单宏定义的一般形式为:#define 标识符 单词串 作用域:从#define定义之后直到该宏定义所在文件结束。 说明:#define行通常放在源程序开头部分,也可以放在源程序中任何位置,但必须出现在使用符号常量之前。 例如: #define YES 1 #define NO 0 程序中用符号常量YES和NO代表1和0,在预编译时就会用1和0替换所有的YES和NO。 注意: (1) 通常用大写字母来定义宏名,以便与变量名区别。 (2) 宏替换只是简单的字符替换,不进行任何计算和语法检查。 例如:#define X 1+2 int y=3*X; 预处理时,会用字符串“1+2”来替换宏名X,因此y的值应该为3*1+2,结果为5,而不是3*(1+2)=6。 (3) 双引号括起来的字符,即使与宏名相同,也不进行替换。 例如:#define OK 1 printf(OK); 执行时输出的是OK,而不是1。 (4) 宏定义可以嵌套定义。 例如: #define R 2.0 #define PI 3.14 #define S PI*R*R 经预处理后,宏S将被3.14*2.0*2.0替换。 2. 带参数的宏定义 带参数的宏定义的一般形式为: #define 标识符(标识符1,标识符2,…) 单词串 例如:#define sqr(x) ((x)*(x)) #define max(a,b) ((a)(b)?(a):(b)) 语句printf(sqr(%d)=%d\n,3,sqr(3)); 预编译时,此句将被替换成:printf(sqr(%d)=%d\n,3,((3)*(3))); 执行后输出sqr(3)=9。 语句printf(max(%d,%d)=%d\n,2,3,max(2,3)); 预编译时,将被替换成:rintf(max(%d,%d)=%d\n,2,3,((2)(3)?(2):(3))); 执行后输出max(2,3)=3。 注意:在带参数的宏定义中,如果单词串是一个含有运算符的表达式,那么单词串中的每个参数都必须用圆括号括起来,并且整个表达式也要括起来。否则替换后的内容可能和原意不同。 如将上例中sqr(x)的宏定义改为: #define sqr(x) x*x 则表达式sqr(1+2)将被替换成: sqr(1+2*1+2) 结果是5,而不是原意希望得到的9。 3. 取消宏名定义 如果需要终止宏的作用域,可以使用#undef命令,取消宏名定义的形式为: #undef 标识符 要求:标识符应该是已定义过的宏名。 例如: #undef PI 表示在该命令后,PI是一个未定义的标识符,不再表示3.14。 9.1.2 文件包含 文件包含命令有两种形式: #include 文件名 #include 文件名 功能:用指定文件的全部内容替换程序中该命令行,从而使指定的文件与当前源文件连成一个源文件。 程序中需要引用标准库函数时,需要在源文件开头用文件包含命令包含库函数的头文件。 例如: #include stdio.h #include math.h 文件包含两种形式的区别: 使用尖括号表示编译系统根据系统头文件存放的目录路径去搜索系统头文件,而不是在源文件目录去查找; 使用双引号则表示编译系统首先在当前的源文件目录中查找,若未找到才根据系统头文件存放的目录路径去搜索系统头文件。 用户编程时可根据自己文件所在的目录来选择某一种命令形式。一般来说,系统定义的头
您可能关注的文档
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第1章 概述.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第2章 窗体.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第3章 基本控件.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第4章 Visual Basic程序设计基础.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第5章 基本控制语句.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第6章 程序设计基本算法.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第7章 高级数据类型.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第8章 过程.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第9章 文件.ppt
- 程序设计基础——Visual Basic教程 第2版 教学课件 作者 周黎 钱瑛 周阳花 第10章 高级控件.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第10章_文件.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽 1第11章 数据结构和数据抽象.ppt
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第2章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第3章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第4章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第5章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第6章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第8章.doc
- 程序设计基础教程 C语言 教学课件 作者 杨有安 陈维 曹惠雅 徐欣欣 鲁丽习题答案 1第9章.doc
- 程序设计与C语言 第二版 教学课件 作者 马鸣远 第1 5章 第1章.ppt
最近下载
- 汉英翻译基础教程-冯庆华-一93页精品课件.ppt VIP
- 设备采购供货安装投标方案.docx VIP
- 八年级物理下册第九章压强测试题新版新人教版.docx VIP
- 升压站强条执行记录表(完整版)-(1).docx VIP
- 黑龙江箵哈尔滨市松雷中学2024-2025学年九年级上学期开学测试英语试卷+.docx VIP
- FANUC数控系统31i-B维修说明书(非常详细).pdf VIP
- 眼科设备采购投标方案.doc VIP
- 铁路售票员培训课件.pptx VIP
- 铁路与轨道交通客运安检实务 项目一 铁路与轨道交通安检基本知识.pptx VIP
- 元素周期律 高一化学人教版(2019)必修第一册.pptx VIP
文档评论(0)