- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 预编译命令;本章能力要求
基本技能
本章小结
习题
;通过本章的学习,要求对以下内容达到相关的技能:
1.理解预编译的概念以及在源程序中使用预编译命令的作用;
2.理解并掌握文件包含命令的使用方法;
3.学会并熟练掌握带参数和不带参数的宏定义命令的格式与用法;
4.了解条件编译命令的形式及基本用法。;13.2.1 预编译的概念和作用
13.2.2 文件包含
13.2.3 宏定义
13.2.4 条件编译;概念及作用
指在源程序编译之前由编译预处理程序所做的工作,生成扩展C源程序
种类
文件包含 #include 比如,#include stdio.h
宏定义 #define 例如,#define Max 100
条件编译 #ifdef…#elseif…#endif
格式
以”#”开头
独占行编写
语句结尾无分号;概念及作用
在一个源文件中将另一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中
格式
#include文件标识 (用户目录/系统目录)
或:#include文件标识 (系统目录)
例: #includemath.h /* 包含系统头文件 */
#includemy.h /* 包含自己的头文件 */
说明
被包含的文件可以是系统提供的头文件,也可以是用户自己设计的文件
被包含的文件不一定是 *.h 文件,也可以是 *.c 、 *.cpp 或*.txt等类型的文本文件
可同时书写多个#include命令包含多个文件
文件包含可以嵌套使用
;宏定义的格式
不带参数的宏定义
#define 宏名 [宏体]
带参数的宏定义
#define 宏名(参数表) [宏体]
取消宏定义
#undef 宏名
有关宏定义的一般说明
有关带参数的宏定义的说明
带参数宏和函数的区别
;有关宏定义的一般说明
宏名一般习惯用大写字母表示,用来与变量名区别,但这并非规定,可以用小写
使用宏名代替字符串可以减少程序中重复书写字符串的工作量
宏定义是用宏名代替一个字符串,即只进行简单的字符串置换,不检查正确性
#define命令定义在程序的函数之外,宏名的有效范围从它出现到源文件结束
在进行宏定义时,可以引入已定义的宏名,可层层置换,但不能重复定义
可以用#undef命令终止宏定义的作用域
程序中用双引号括起来的字符串,以及标识符中的部分,即使有与宏名完全相同的成分,由于它们不是宏名,因此在编译预处理时,不会进行替换;有关带参数的宏定义的说明
带参数中的宏的展开只是将后面括号中的实参字符串代替#define命令行中的形参
带参数宏定义时,宏名和参数的括号之间不应加空格,否则将空格以后的字符作替换字符串的一部分
带参数的宏定义要求实参个数与形参个数相同,但没有类型要求
如果宏定义中包含“##”,则宏替换时将“##”去掉,并将其前后的字符串合在一起。
注意宏定义中圆括号的使用。
宏定义中由双引号括起来的字符串常量,若含有形参,则在做宏替换时实参是不会替换此双引号中的形参的。;带参数宏和函数的区别
;作用
按照不同的条件去编译程序的不同部分,因而产生不同的目标代码文件
三种类型
#ifdef 标识符
程序段1
[#else
程序段2]
#endif
作用:若标示符已被#define命令定义,则编译程序段1,否则编译程序段2。#else部分的内容可以省略,即程序段2可以省略。;三种类型
#ifndef 标识符
程序段1
[#else
程序段2]
#endif
作用:若标示符未被#define命令定义,则编译程序段1,否则编译程序段2。#else部分的内容可以省略,即程序段2可以省略。与第一种形式的功能相反。;三种类型
#if 常量表达式
程序段1
[#else
程序段2]
#endif
作用:若表达式的值为真(非0),则编译程序段1,否则编译程序段2。#else部分的内容可以省略,即程序段2可以省略。可以实现给定条件,使程序在不同条件下执行不同功能。; 预编译命令是C语言特有的功能,它是在对源程序正式编译之前完成的,灵活使用预编译命令有利于程序的阅读、修改、调试和移植。需要注意的是,预编译命令本身并不形成任何C程序代码,它仅为程序编译做准备。
文件包含是预编译的一个重要功能,它可以把多个源文件连接成一个源文件进行编译,结果生成一个目标文件。
宏定义是用一个标识符表示一个字符串,该字符串可以是常量、变量或表达式。在宏调用时用该字符串替换宏名。宏定义与参数相似,可以带参数,在调用时以实参置换形参。为避免宏置换发生错误,宏
您可能关注的文档
- 复变函数3-习题课课程.ppt
- 第1章半导体器材汇编.ppt
- 等值线图的判读与应用汇编.ppt
- 复变函数4课程.ppt
- 核磁共振碳谱分析课程.ppt
- 复变函数4-习题课课程.ppt
- 第1章半导体器件基础汇编.ppt
- 等值线之等温线汇编.ppt
- 第8讲_透射电子显微镜(TEM)_20111104概述.ppt
- 第1章编译汇编.pptx
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)