1 / 45
文档名称:

C语言程序设计 任文 孔庆彦 (第7章--第12章) 第8章.ppt

格式:ppt   大小:1,658KB   页数:45页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言程序设计 任文 孔庆彦 (第7章--第12章) 第8章.ppt

上传人:416612240 2019/5/12 文件大小:1.62 MB

下载得到文件列表

C语言程序设计 任文 孔庆彦 (第7章--第12章) 第8章.ppt

文档介绍

文档介绍::返回目录了解预处理命令的基本概念和作用。掌握C语言中宏定义的形式与使用,理解宏定义与函数调用之间的差别。掌握文件包含、条件编译等预处理命令的使用。以“#”号开头的命令,被称为“编译预处理”命令。C语言中编译预处理主要包括宏定义、文件包含、条件编译等。所谓预处理,是指在进行编译的第一遍扫描(即词法扫描和语法分析)之前所要做的工作,它由预处理程序完成。当我们对源文件进行编译时,系统首先自动启用预处理程序,对源程序中的预处理部分进行处理,然后才对源程序进行编译。由此可见,预处理命令不是实现程序的功能,而是给C语言编译系统提供信息,通知C编译器在对源程序进行编译之前应该做哪些预处理工作。预处理命令是由ANSIC统一规定的,但它并不是C语言本身的组成部分,更不是C语言的语句,为了与其他C语句相区别,所有的预处理命令都以符号“#”开头,书写时单独占一行,且末尾不加分号。在源程序中,预处理命令通常放在函数之外的源文件起始部分。概述(1)返回目录预编译功能是C语言特有的,合理地使用预处理命令,不但可以提高编程的效率和程序的可读性,而且便于修改、移植和调试程序,增加程序的灵活性,有助于实现结构化程序设计。本章主要介绍宏定义与引用、包含文件处理、条件编译命令。返回目录概述(2)在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。为了区别于一般的变量名、数组名、指针变量名,宏名通常用大写字母表示。宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。在C语言中,“宏”分为无参宏和带参宏两种。(1)无参宏的宏名后不带参数。其定义的一般形式为:#define标识符字符串其中:“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。当定义了宏名后,在源程序中就可以引用这个宏名了。源程序开始编译前,编译预处理程序将会把源程序清单中所有引用的宏名替换成对应的字符串,然后再编译源程序。例如:###defineSPI*R*R…floatx=S;预编译后,语句“floatx=S;”将被展开替换为:floatx=**;不难看出,。返回本节目录说明:宏名通常用大写字母表示,且其前后应有空格,以便准确地辨认宏名。本命令不是语句,其后不能有分号(;)。如果有分号则连分号也一起替换。宏替换只是简单的字符替换,并不进行任何语法检查。如有错误,只能在编译已被宏展开后的源程序时才能被发现。如将上面的“#”改为“#;”,则语句“floatx=S;”将被展开替换为:floatx=;**;编译时将出现语法错误。在字符串中若出现运算符,要注意替换后的结果,通常需在合适的位置加括号。例如:将上面的“#”改为“#+”时,语句“floatx=S;”将被展开替换为:floatx=*+*+;显然运算结果不符合原意。若将宏定义改为:“#defineR(+)”,语句“floatx=S;”将被展开替换为:floatx=*(+)*(+);这样运算结果才是正确的。宏定义也有作用域,它的作用域是从开始定义处到本程序的末尾。所以一般都将宏定义放在源程序开头。如果要中止其作用域,可使用“#undef”命令取消宏定义,格式如下:#(2)返回本节目录由于#undefPI的作用,使PI的作用域在#undefPI行处终止,因此在f函数中,。这样可以灵活控制宏定义的作用范围。(3)返回本节目录对出现在源程序字符串中的宏名,预处理时不对其作宏替换操作。例如:#=;…Printf("S=PI*r*r=%f\n",PI*r*r);输出结果是:S=PI*r*r=,而不是s=*r*r=。使用宏定义,可以简化

最近更新

2025年先进个人经验交流材料范文(整理篇) 31页

2025年元曲《塞鸿秋·浔阳即景》赏析(精选篇.. 28页

2024外墙装修劳务分包合同范本-智能家居系统集.. 49页

2024年地产公司绿化工程技术人员劳动合同3篇 52页

2024年度土地居间代理服务合同范本精简版详述.. 57页

2024年度汽车行业劳动合同范本[汽车通用]3篇 57页

2024年招标工程廉政管理服务合同范本3篇 47页

2024年消防行业消防灭火器技术研发合作合同3篇.. 50页

2024年生产部经理聘请协议3篇 50页

2024年离婚双方权益分配合同精简版摘要版B版 13页

2024年耐候性幕墙工程设计合作合同3篇 53页

2025年上海高考英语试卷及答案(word-完整精校.. 12页

2024洗碗机器人操作员劳动合同范本3篇 47页

2025年催眠师手记读书心得(合集篇) 14页

2025年偶得的美好初二作文(共25篇) 35页

2025土方工程劳务班组承包合同书 13页

2025学校入学协议书 12页

2025工程单项承包合同书 13页

2025建筑施工安全协议书书 17页

2025年做月饼六年级作文600字(精选13篇) 15页

2025年做手工作文(精选篇) 13页

2025有担保的购销合同书 14页

2025水电暖劳务清包合同书 16页

2025版中英文对照装饰施工合同书 17页

2025版伍蓓的离婚协议书书a 14页

电力网元件的等值电路和参数计算 89页

2025年假文盲漫画带给我的启示作文(通用30篇.. 31页

2025版借款居间服务合同书书范文 14页

医学仪器原理与设计-血气分析仪 47页

2025年野钓基地可行性报告模板 35页