- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 预处理命令 主编:彭德林 柴方艳 C语言程序设计任务教程 ——第9章 预处理命令 C语言程序设计任务教程 ——第9章 预处理命令 任务2 掌握宏定义 任务2 掌握宏定义 任务2 掌握宏定义 任务3 掌握文件包含 任务4 了解条件编译 所谓条件编译就是对程序中某一部分内容指定“编译的条件”,只有“编译的条件”满足时才进行编译。预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这样可以提高程序的移植性和通用性。 Thank You! * * C语言程序设计任务教程 带参数的宏的定义及使用 1 掌握不带参数的宏的定义及使用 2 掌握“文件包含”的处理 3 了解关于条件编译命令的三种形式 4 预处理命令简介 任务1 掌握文件包含 任务3 任务2 掌握宏定义 了解条件编译 任务4 认识什么是预处理命令,它主要包括哪些内容,有什么特点? 任务描述 任务1 预处理命令简介 例如若程序中用#define命令定义了一个符号常量W,用它来替代字符串“what are you doing?”,则在预处理时将程序中所有的W都置换为该字符串。若程序中用#include命令包含一个文件“math. h”,则在预处理时将math. h文件中的实际内容代替该命令。 预处理命令是C程序在编译之前进行处理的命令,它是由ANSI C统一规定的,因它不是C语言本身的组成部分,所以不能直接对它们进行编译。要先对程序中这些特殊的命令进行“预处理”,然后编译程序才能进行编译。 任务1 预处理命令简介 C提供的预处理功能主要有: 宏定义 文件包含 条件编译三种。 书写格式: “#”开头 占单独书写行 语句尾不加分号 不带参数的宏定义 9.2.1 带参数的宏定义 9.2.2 任务2 掌握宏定义 1、不带参数的宏定义 一般形式 #define 标识符 字符串 指令名称 宏名,被定义代表后面的单词串 宏体,是宏的内容文本 “字符串”可以是常量、表达式、格式串等 功能:用指定标识符(宏名)代替字符序列(宏体) 注意:宏替换时仅仅是将源程序中与宏名相同的标识符替换成宏的内容文本,并不对宏的内容文本做任何处理。 在C语方中,“宏” 分为带参数和不带参数两种形式 (1)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不做任何检查。如有错误,只能在编译已被宏展开后的源程序时才能发现。 对于宏定义要注意以下几点: 任务2 掌握宏定义 (2)宏定义不是说明或语句,在行末不必加分号,如果加上分号则会连分号也一起置换。 例如: #define PI 3.1415926; s=PI*r*r; 经过宏展开后,该语句变为s= 3.1415926;*r*r,这显然会出现错误。 (3)宏定义必须写在函数之外,其作用域为宏定义命令起到本源程序结束。通常,#define命令写在文件开头,函数之前,作为文件一部分,在此文件范围内有效。如要终止其作用域可使用 #undef命令。 例如: #define PI 3.1415926 void main() { … } #undef PI zi() { … } 由于#undef的作用,使PI的作用范围到#undef行终止,这表示PI只在main函数中有效,而在zi函数中无效。 (4)宏名在源程序中若被引号引用时,则预处理程序不对其做宏代换。 【例9.2】引号中的字符虽与宏名相同,但不进行置换。 /*example9-2*/ #define well 100 #includestdio.h void main() { printf(well); printf(\n); } 运行结果: well 上例中定义宏名well表示100,但在printf 语句中well 被引号引用,因此不做宏代换。只把“well”当字符串处理。 (5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。 【例9.3】在宏定义中引用已定义的宏名。 /*example9-3*/ # includestdio.h # define PI 3.1415926 # define R 5.0 # define S PI*R*R /* PI和R是已定义的宏名*/ void main() { printf(S=%10.4f\n,S); } 运行结果: s = 78.5398 在上例中对语句printf(%f,S)进行宏代换后变为printf(%10.4f\n
您可能关注的文档
- C语言程序设计 徐秋红 第6章编译预处理新.ppt
- C语言程序设计 徐秋红 第7章数组新.ppt
- C语言程序设计 徐秋红 第8章指针新.ppt
- C语言程序设计 徐秋红 第9章结构体与共用体新.ppt
- C语言程序设计 徐秋红 第10章文件新.ppt
- C语言程序设计 易晓梅 赵芸 第2章 基本数据类型、运算符及表达式ckp新.ppt
- C语言程序设计 易晓梅 赵芸 第4章 数组新.ppt
- C语言程序设计 易晓梅 赵芸 第5章 函数新.ppt
- C语言程序设计 易晓梅 赵芸 第6章 变量的作用域及存储类别新.ppt
- C语言程序设计 易晓梅 赵芸 第7章 预处理新.ppt
- C语言程序设计任务教程 彭德林 柴方艳 第12章新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第3章 运算符和表达式新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第6章 循环结构新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第8章 函数新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第10章 指针新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第11章 结构体、共用体及枚举类型新.ppt
- C语言程序设计实例教程 潘志安 朱运乔 余小燕 第12章 文件I/O新.ppt
- C语言程序设计与实验指导 李爱玲 姬秀荔 主编 11新.ppt
- C语言程序设计与实验指导 李爱玲 姬秀荔 主编 第4章新.ppt
- C语言程序设计与实验指导 李爱玲 姬秀荔 主编 第5章新.ppt
最近下载
- 《趣味的手工创意--向日葵》-美术课件.ppt VIP
- 派出所民警先进事迹材料三篇 .doc VIP
- VIVITEK丽讯RU76953使用说明书.pdf VIP
- 原调正谱bE边疆的泉水清又纯钢琴伴奏联考.pdf VIP
- 泳池工程施工设计方案(3篇).docx VIP
- 少儿水粉 玫瑰庄园—美术课件.pptx VIP
- (一模)贵阳市2025年高三年级适应性考试(一)地理试卷(含官方答案).docx
- 《模型构建在高中生物教学中的应用研究》课题研究方案.doc
- 精品解析:四川省成都市武侯区2024-2025学年上学期八年级期末考试数学试题(原卷版).docx VIP
- 苏J9508室外工程-标准设计图集.pdf VIP
文档评论(0)