C语言第06章预处理命令.pptVIP

  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文档。上传文档
查看更多
C语言第06章预处理命令

西华大学电气信息学院 郑海春 第六章 预处理命令 本章内容 理解什么是编译预处理 掌握和应用文件包含、宏定义和条件编译编译预处理命令 本 章 目 录 6.1 编译预处理命令 6.2 文件包含 6.3 宏定义 6.4 条件编译 6.5 习题 6.1 编译预处理命令 6.2 文件包含 6.3 宏定义 6.4 条件编译 6.5 习题 * * * * 编译预处理:在对程序进行通常的编译前,对预处理命令进行“处理”。预处理功能主要有三种:文件包含、宏定义和条件编译。预处理命令不是C的语句,为了和C语句区别,预处理命令前加#说明,并且预处理命令不加分号结束。 文件包含编译预处理命令#include : 作用:把指定的源文件(.c)或头文件(.h)的全部内容嵌入到当前文件中该点处。 一般形式: #include 文件名 #include “文件名” 形式1:直接按系统标准方式检索文件目录 形式2:在当前源文件的目录中寻找,若找不到再按系统标准方式检索其它文件目录 例题: 1.新建一控制台工程,并向工程中添加一个名为myhead.h的C/C++头文件。 2. 编辑myhead.h头文件。 3. 向工程中添加一个名为file1.c的源文件。 4. 编辑file1.c源文件。 5. 运行结果。 说明:编译预处理命令#include的作用是在编译之前将包含的文件myhead.h中的所有内容复制到文件file1.c中,然后进行编译。含义如下图所示。 不带参数的宏定义 格式: #define 宏名 替换文本 说明: 常用来定义符号常量 例:#define Name “西华大学” void main() { char n[20]=Name; … } 编译之前预处理为: void main() ????? { char n[20]= “西华大学”; … } 带参数的宏定义 格式: #define 宏名(参数表) 字符串 说明:对带参的宏定义是这样展开置换的,在程序中如果有带实参的宏(如S(5,7)),则按#define命令行中指定的字符串从左到右进行置换。如果字符串中包含宏中的形参(如a、b),则将程序语句中相应的实参代替形参,如果宏定义中的字符串中的字符不是参数字符(如*号),则保留。 例:#define S(a,b) a*b+a/b ???? … ???? x=S(5,7) ; ???? … 编译前预处理为: … x=5*7+5/7; … 说明: 宏替换只是简单的进行替换,不要人为的加上一些括号。 宏定义不是C语句,不必在行末加分号。如果加了分号则会连分号一起进行置换。 #define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。可以用#undef命令终止宏定义的作用域。 在进行宏定义时,可以引用已定义的宏名,可以层层置换。 对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行置换。 宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。 一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件时才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。 条件编译命令有以下几种形式: 判断符号常量,进行条件编译 形式1: #ifdef 标识符 程序段 # endif 作用: 如果标识符被定义过(一般用#define命令定义),则编译程序段,否则不编译。 形式2: #ifdef 标识符 程序段1 #else 程序段2 # endif 作用:如果标识符被定义过,则编译程序段1,否则编译程序段2。 形式3: #ifndef 标识符 程序段 #endif 作用:如果标识符没有被定义过,则编译程序段,否则不编译。 形式4: #ifndef 标识符 程序段1 #else 程序段2 # endif

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档