版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 预处理命令 第9章本 章 内 容宏定义文件包含处理条件编译9.1 宏定义基本概念预处理命令 由ANSI C统一规定,不是C语言本身的组成部分。预处理的实现宏定义文件包含条件编译9.1 宏定义不带参数的宏定义一般形式: #define 标识符 字符串例如: #define PI 3.1415926说明宏名一般用大写字母表示,以便与变量名相区别。宏定义是用宏名代替一个字符串,只作简单的置换,不作正确性检查。宏定义不是C语句,不必在行末加分号。#define命令应放在程序中函数的外面,有效范围为定义命令之后到本源文件结束。可以用#undef命令终止宏定义的作用域。在进行宏定义时,可以引用已定义的宏
2、名,可以层层置换。(例9.2)对程序中用双引号括起来的字符串内的字符,即使与宏名相同,也不进行置换。宏定义与定义变量的含义不同,不分配内存空间。9.1 宏定义带参数的宏定义一般形式 #define 宏名(参数表) 字符串例如: #define S(a, b) a*b area = S(2, 3);宏定义的展开:实参与虚参相对应,从左到右进行置换。例9.3:如果有语句:area = S(a+b);分析程序正误?#define PI 3.1415926#define S(r) PI*r*rmain() float a, area; a = 3.6; area = S(a); printf(%f,
3、%f, a, area); 9.1 宏定义说明带参的宏定义,在定义时,在字符串中的形式参数外面加一个括号。在宏定义时,在宏名与带参数的括号之间不应加空格,否则将空格以后的字符都作为替代字符串的一部分。带参的宏定义与函数的不同函数调用时,先求出实参表达式的值,然后代入形参。而使用带参的宏只是进行简单的字符替换。函数调用在程序运行时处理,为形参分配临时的内存单元。而宏展开是在编译时进行,不分配内存单元,不进行值的传递处理,也没有返回值的概念。函数中的实参和形参都有相应的类型定义。而宏不存在类型问题,宏名无类型,它的参数也无类型。调用函数只可得到一个返回值,而用宏可以得到几个结果。9.1 宏定义例
4、9.4:宏展开后源程序增长,而函数调用不使源程序变长。宏替换不占运行时间,只占编译时间。而函数调用则占运行时间。对一些简短的功能实现,用宏和函数都可以。例9.5(略)#define PI 3.1415926#define CIRCLE(R, L, S) L=2*PI*R; S=PI*R*Rmain() float r, l; scanf(%f, &r); CIRCLE(r, l); printf(%6.2f, %6.2f, %6.2f, r, l, s); 9.2 文件包含处理文件包含一个源文件可以将另一个源文件的全部内容包含进来,称为文件包含。命令形式 #include 文件名 或 #inc
5、lude (标准方式) file1.c file2.c file1.c编译时两个文件作为一个源程序进行编译,得到一个目标文件。#includeABBA说明:一个#include命令只能指定一个被包含文件。如果文件1包含文件2,而文件2中要用到文件3的内容,则在文件1中有: #include file3.h #include file2.h文件包含可以嵌套。 file1.c file2.c file3.c两种文件包含形式的区别(P196)尖括号 系统到存放C库函数头文件所在的目录中寻找要包含的文件,称为标准方式。双撇号 系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。若文件不
6、在当前目录中,双撇号内可给出文件路径。9.2 文件包含处理#include file2.c#include file3.c9.3 条件编译条件编译指定编译的条件,仅对部分内容进行编译,称为条件编译。条件编译命令的几种形式:(1)#ifdef 标识符程序段1#else程序段2#endif说明:#else 部分可以省略。程序段可以是语句组也可以是命令行。例如:#define DEBUG.#ifdef DEBUG printf(x=%d, x);#else printf(y=%d, y);#endif(3)#if 表达式程序段1#else程序段2#endif(2)#ifndef 标识符程序段1#else程序段2#endif9.3 条件编译9.3 条件编译#define LETTER 1main() char str20 = C Language, c; int i; i = 0; while(c=stri) !=0) i+; #if LETTER if(c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 储能 BMS 热管理控制策略设计规范 中文版(电芯温度均衡算法 + 热失控分级预警 + 充放电温控限制)
- 广东省珠海市文园中学2026-2027学年九年级上学期暑假学情自我反馈语文试题(含答案)
- 第七章§7.4空间直线、平面的平行
- 化学研究性课题吸烟的危害
- 净现值及其他投资决策规则
- 2026年秋季高三学业复盘提质收心奋进课件
- 2026年度初三年级德育工作计划课件:校园文化建设
- 2026年秋季初三新学期静心笃行备考收心课件
- 植物园生态农业项目合作协议2026
- 2026商旅企业风险防控与危机管理分析
- 咯血介入治疗护理查房
- 《血管活性药物静脉输注护理》标准解读
- 统编小学语文六年级上册第三单元解读
- 集合的基本运算(课件)
- 2023年上海市秋季班高二语文讲义(秋上教师版)
- 《无人机组装与调试》第8章 无人直升机的组装与调试
- 浙教版七年级数学下册全册课件
- 高中英语 译林版 必修三 Unit 3 The world online Unit3第2课时Reading
- 把政治监督摆在突出位置不断推进政治监督“三化”PPT大力推进政治监督三化PPT课件(带内容)
- GB/T 2693-2001电子设备用固定电容器第1部分:总规范
- 中压综保说明书-西门子7sj68中文v41.7nxpowerlite
评论
0/150
提交评论