- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译预处理-课件(PPT-精)
第6章 编译预处理 第一节 编译预处理的概念和特点 第二节 宏定义 第三节 文件包含 第四节 条件编译 第一节 编译预处理的概念和特点 二、编译预处理的特点 第二节 宏定义 说明(续1): 说明(续2): 二、带参数的宏定义 说明(见教材P175~178): 第三节 文件包含 二、文件包含说明 文件包含说明(续) 第四节 条件编译 2、第二种形式 二、其他 第6章 编译预处理----习题 * 1 / 15 《C语言程序设计》 龙昭华主编 课件制作:刘达明 023(第六章 编译预处理) 2 / 15 ANSIC标准规定可以在C源程序中加入一些“预处理命令”,以改进程序设计环 境,提高编程效率。这些预处理命令是由ANSIC统一规定的,但它不是C语言本 身的组成部分,编译程序不能识别它们,因此不能直接对它们进行编译。必须 在对程序进行通常的编译(包括词法分析、语法分析、代码生成、代码优化等) 之前,先对程序这些特殊的命令进行“预处理”(即进行字符串的置换),经过预 处理后的程序不包括预处理命令,最后再由编译程序对预处理后的源程序进行 通常的编译处理,得到目标代码(OBJ文件)。 C提供的预处理功能有以下三种: 1、宏定义 2、文件包含 3、条件编译 分别宏定义命令、文件包括命令、条件编译命令来实现。为了与一般C语句 相区别,这些命令以符号“#”开头。 一、编译预处理的概念 课件制作:刘达明 023第一节 编译预处理的概念和特点 3 / 15 许多C编译系统都包括了预处理、编译和连接等部分,在进行编译时一气哈 成。因此不要误认为预处理命令是C语言的一部分。必须正确区别预处理命令和 C语句、区别预处理和编译。 编译预处理有以下特点: 1、所有预处理命令均以#开头,在它前面不能出现空格以外的其它字符。 2、每条预处理命令独占一行,一般放在源程序的首部。 3、预处理命令不是C语句,因此不必加分号。 4、预处理程序控制行的作用范围仅限于说明它们的那个文件。 合理地使用预处理功能编写的程序便于程序的阅读、修改、移植和调试,也 有利于模块化程序设计。 (第六章 编译预处理) 课件制作:刘达明 023(第六章 编译预处理) 4 / 15 用一个指定的标识符(宏名)来代表一个字符串(宏值),它的一般形式为: #define 标识符 字符串 如:#define PI 3.1415926 它的作用是用PI来代替3.1415926。 又如:#define EOF -1 #define ESC 27 说明: ⑴define是关键字,表示宏定义。 ⑵宏名必须符合标识符的定义,为了区别于变量,宏名一般采用大写字母。 ⑶宏的作用:在程序中的任何地方都可直接使用宏名,系统编译前会将程序 中的宏名用字符串替换,称为宏替换,宏替换并不进行语法检查。 ⑷宏定义不是C语言的语句,不能在行末加语句结束符“;”号。如果加了“;” 号,则连“;”号一并进行替换。 ⑸宏名的有效范围是从定义命令之后,直到源程序文件结束,或遇到宏定义 终止命令#undef为止。如终止宏名PI的作用域: #undef PI 一、不带参数的宏定义 课件制作:刘达明 023第二节 宏定义 5 / 15 ⑹在进行宏定义时,可以引用已定义的宏名,可以层层置换。 (第六章 编译预处理) #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R main() { printf(“L=%f\n”,L); printf(“S=%f\n”,S); } 运行结果为: L=18.849556 S=28.274333 相当 于以 下展 开: main() { printf(“L=%f\n”,2*3.1415926*3.0); printf(“S=%f\n”,3.1415926*3.0*3.0); } 运行结果为: L=18.849556 S=28.274333 即: L展开为:2*3.1415926*3.0 S展开为:3.1415926*3.0*3.0 课件制作:刘达明 023第二节 宏定义 6 / 15 ⑺对程序中用双引号括起来的字符串,即使与宏名相同,也不替换。如上例 ⑻当宏值为表达式时,最好用圆括号括起来,以避免引起误解。 (第六章 编
文档评论(0)