- 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程序代码,它仅为程序编译做准备。
文件包含是预编译的一个重要功能,它可以把多个源文件连接成一个源文件进行编译,结果生成一个目标文件。
宏定义是用一个标识符表示一个字符串,该字符串可以是常量、变量或表达式。在宏调用时用该字符串替换宏名。宏定义与参数相似,可以带参数,在调用时以实参置换形参。为避免宏置换发生错误,宏
您可能关注的文档
- 2质点运动介绍.ppt
- 03端接负载无耗传输线介绍.ppt
- 03一维定态问题介绍.ppt
- 带电粒子在电场中的运动1技术方案.ppt
- 带电粒子在非均匀电磁场中的运动技术方案.doc
- 3、精细有机合成化学画图软件介绍.ppt
- 丹阳市2005年高三统一测试2005技术方案.doc
- 3.1《温度》贾海强介绍.ppt
- 单轮机器人翻译技术方案.doc
- 单片机控制与应用(刘靖)课件4技术方案.ppt
- 2023年度安全员考试题库检测试题打印附答案详解(达标题).docx
- 2023年度安全员考试题库检测试题打印(实用)附答案详解.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【名师系列】.docx
- 2023年度安全员考试题库检测试题打印及答案详解【考点梳理】.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【各地真题】.docx
- 2023年度安全员考试题库检测试题打印附参考答案详解【完整版】.docx
- 2023年度安全员考试高分题库含答案详解(精练).docx
- 2023年度安全员考试高分题库及参考答案详解【能力提升】.docx
- 2023年度安全员考试高分题库附答案详解【典型题】.docx
- 2023年度安全员考试高分题库及参考答案详解(培优B卷).docx
最近下载
- 风险管理高频考点第一章 风险管理基础 .pdf VIP
- 康居小区外网施工组织设计精品.doc VIP
- 2025年电工中级职业技能考试真题卷(电工安全操作与事故处理篇).docx VIP
- 2025年电工中级职业技能考试真题卷:电工中级职业技能考试在线备考班.docx VIP
- 第十四章 整式的乘法与因式分解单元培优卷(原卷版).docx VIP
- 2025年电工中级职业技能考试真题卷:电工中级职业技能考试在线试题.docx VIP
- 第十四章 整式的乘法与因式分解单元培优卷(原卷版).pdf VIP
- 2025年电工中级职业技能理论考试笔试试题(600题)含答案.docx VIP
- 2025年全国电工中级职业技能理论考试试题(700题)含答案.docx VIP
- 介入式心脏瓣膜技术考核试卷.docx
文档评论(0)