版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章预编译处理,C语言程序设计,主讲教师:祝建华,2,本章讨论C语言的预处理指令(preprocessing director),全面地介绍常用的 #include、 #define和条件编译的功能和用法以及其它预处理功能(如 #error、#pragma和#line 等) , 还介绍了常用标准头文件中的宏、assert宏、预定义宏和宏定义中的运算符(#和#)的使用。,内容摘要,3,重点讲解,6.1文件包含#include 6.2宏定义#define 6.3带参数的宏定义 6.4取消宏定义#undef 6.5条件编译 6.6assert宏,小结,4,目录,C程序的源代码中可包括各种以“#”号
2、开始的指令,这些指令被称为预处理指令(preprocessing director)。 编译程序在翻译之前,首先源程序中的预处理指令进行处理。这个过程称为编译预处理。 当对一个源文件进行编译时,编译系统将自动引用预处理程序对源程序中的预处理指令进行处理,处理完毕后程序将不再包括预处理指令,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。,5,文件包含预处理指令的一般形式为: #include 或 #include “文件路径文件名” 其中,文件名是指磁盘文件名,文件路径是文件在磁盘存放的位置。 预处理指令使得预处理器用指定文件的内容替换该预处理指令行,使其成为源文
3、件的一部分参与编译。 如果指令中未指定文件路径,是在编译器的系统目录下寻找文件名,“”是先在用户当前目录下寻找文件名,如果不存在再到编译器的系统目录下寻找文件名。,目录,6.1文件包含#include,如果TC编译器安装目录是c:tc,其系统目录是c:tcinclude。,6,无参数的宏名定义的一般形式为: #define 标识符 字符串 其中,标识符为所定义的宏名,字符串可以是常数、表达式、格式串等任意字符。 预处理程序是将源程序中出现的所有标识符(即宏名),用字符串逐一替换。,6.2宏定义#define,目录,例6.1 键入y值,求表达式3(y2+3y)+4(y2+3y)+y(y2+3y)
4、 的值。,#define M (y*y+3*y ) void main(void) int s,y; printf(Input a number: ); scanf(%d, ,s=3*(y*y+3*y)+4*(y*y+3*y)+y*(y*y+3*y),7,带参数的宏名定义的一般形式为: #define 标识符(标识符1,标识符2, ,标识符n) 字符串 其中,标识符为所定义的宏名,标识符i为宏名的形式参数,字符串可以是常数、表达式、格式串等任意字符。 预处理程序是将源程序中出现的所有带参的标识符(即带参宏名),首先用其实参逐一替换字符串中的形参,之后形实替换后的字符串,替换带参宏。,目录,6.
5、3带参数的宏定义#define,#define SQ(x) (x)*(x),SQ(a+1),(a+1) * (a+1),SQ(SQ(a),(a)*(a) * (a)*(a),8,6.4取消宏定义#undef,目录,取消宏名定义的一般形式为: #undefine 标识符 其中,标识符为所定义的宏名。 预处理程序是将源程序中宏定义的标识符,取消其定义。即宏名的作用域从其定义点开始直到该宏定义指令所在文件结束。,宏SIZE作用域,9,6.5条件编译,目录,预处理程序提供了条件编译指令,用于在预处理中进行条件控制,根据所求条件的值有选择地包含不同的程序部分,因而产生不同的目标代码。 条件编译指令有如下
6、(表6.1)所示的三种形式,每种形式的控制流与if-else语句的控制流类似。 “程序段”中可以包含#include和#define预处理行,常量表达式必须是整型的,但不能含有 sizeof 与强制类型转换运算符或枚举常量。,10,6.6Cassert宏,目录,11,本章集中讨论了预处理程序有关的问题。编译前的预处理功能是C区别于其它高级语言的一个重要特征之一,所有的预处理指令都是以“#”开头。 最常用的预处理功能有三种:#include、#define和条件编译。 头文件assert.h中的宏assert用来测试表达式的值,有助于表达式的值满足要求,保证程序的正确性。 预处理程序还有许多其它有用的功能,例如,宏所使用的“#”和“#”运算符、#error、#pragma、#line。 预处理指令扩展了C程序设计的环境,是C语言的一个重要功能。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度项目投资与合作协议
- 智能化图书馆合同范本文档
- 2024版企业办公设备分期购买合同
- 信用卡消费合同范本
- 2024年度办公空间租赁合同(含物业服务)
- 2024年度新能源领域技术研发与许可合同
- 镇江市汽车销售合同范本
- 2024年度幼教资源整合服务合同
- 镇江句容市郭庄镇选拔村级后备人才招聘笔试真题2023
- 云浮市招聘医疗卫生人才笔试真题2023
- 浙江省初中名校发展共同体2024-2025学年九年级上学期期中考试科学试卷
- 2024江西吉安县政务服务大厅人员招聘11人笔试备考题库及答案解析
- 礼仪培训第一
- 四年级数学(四则混合运算带括号)计算题专项练习与答案
- 人教版一年级上册数学第5单元《6-10的认识和加减法》试卷及答案
- 团员发展纪实簿
- 2024年中学生编程(图形化)竞赛试题
- DB11T 1213-2015 自来水单位产量能源消耗限额
- 2024-2025学年统编版七年级语文上册 第四单元 单元测试卷
- 无人机应用与基础操控入门课件
- 从《论语》谈孔子的养生之道
评论
0/150
提交评论