版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 编译预处理,编译预处理,文件包含 宏定义 条件编译,10.1 文件包含,命令的一般形式 格式1: #include 格式2: #include 文件名,文件包含是将指定的某个源文件的内容全部包含到当前文件中。用include命令实现。,格式1:预处理程序仅在C所在目录下查找指定文件 格式2:预处理程序首先在当前目录中查找指定文件 若找不到再到C所在目录中查找。,#define 宏名 字符串,宏定义的功能: 在进行编译前,用字符串原样替换程序中的宏名。 这个替换过程称为“宏替换”或“宏展开”,字符串也称为替换文本。,一般格式:,10.2 不带参数的宏定义,#define PI 3.14
2、 #define S PI*r*r #define V 4*S*r/3 main( ) float r; printf(nInput r:); scanf(%f, ,宏定义的作用域是从定义处开始到源文件结束, 但根据需要可用undef命令终止其作用域。形式为:,#undef 宏名,#define YES 1 main() printf(%d,YES); max(); #undef YES #define YES 0 max() printf(%d,YES); ,定义形式:,#define 宏名(形参表) 字符串,功能: 用宏名后圆括号中的实参替换字符串中的形参 把源程序中所有带参数的宏名用宏定
3、义中的字符串替换,10.3 带参数的宏定义,不能加空格,#define S(a,b) a*b . area=S(3,2); 宏展开: area=3*2;,引用形式:,宏名(实参表),#define S (r) PI*r*r 相当于定义了不带参宏S,代表字符串“(r) PI*r*r”,例: #define POWER(x) x*x x=4; y=6; z=POWER(x+y); 宏展开: z=x+y*x+y; 一般写成: #define POWER(x) (x)*(x) 宏展开:z=(x+y)*(x+y);,形参用实参换,其它字符保留, 宏体及各形参外一般应加括号(),练习: #define M
4、A(x) x*(x-1) main( ) int a=1,b=2; printf(%dn, MA(1+a+b); ,输出结果:8,注意:带参数的宏定义与函数是不同的!,函数调用是在运行时处理的,先求表达式的值,然后代入临时分配的形参, 有类型问题有返回值。 函数调用不改变源程序。 宏展开则是在预编译时进行的,只将实参字符置换对应的形参,不分配单元,不进行值的传递,没有类型问题, 也无返回值的概念。 宏展开后源程序发生变化。 本质上宏展开仅仅是字符序列的替换,由编译系统对替换后字符序列进行解释和语法检查,只占编译时间。,格式1: #ifdef 标识符 程序段 1 #else 程序段 2 #end
5、if,10.4 条件编译,若所指定的标识符已经被#define定义,则编译程序段1,否则编译程序段2,#include #define MA 1 main( ) int a=10; #ifdef MA a=a-10; printf(%dn,a); #else a=a+10; printf(%dn,a); #endif ,输出结果:0,0,10.4 条件编译,格式2: #ifndef 标识符 程序段 1 #else 程序段 2 #endif,若所指定的标识符未被#define定义,则编译程序段1,否则编译程序段2,#include #define MA 1 main( ) int a=10; #ifndef MA a=a-10; printf(%dn,a); #else a=a+10; printf(%dn,a); #endif ,输出结果:20,/#define MA 1,输出结果:0,10.4 条件编译,格式3: #if 常量表达式 程序段 1 #else 程序段 2 #endif,若常量表达式非0,则编译程序段1,否则编译程序段2,#include #define LE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应链管理流程优化方案与实施手册
- 集团重大决策讨论制度
- 销售管理部门制度
- 部门协同联动制度
- 汉江实验室2026届校园招聘备考题库及答案详解【有一套】
- 2026上半年四川成都市双流区卫健系统考核招聘专业技术人员14人备考题库及完整答案详解【必刷】
- 2026上半年北京事业单位统考大兴区招聘137人备考题库(第一批)含答案详解(完整版)
- 2026内蒙古霍林河机场管理有限责任公司招聘工作人员3人备考题库及答案详解(典优)
- 2026江西理工大学高层次人才招聘备考题库附完整答案详解【各地真题】
- 2026湖南怀化市辰溪县残疾人联合会公益性岗位招聘1人备考题库及参考答案详解(考试直接用)
- 2026湖南张家界市桑植县招聘城市社区专职工作者20人考试参考试题及答案解析
- (新教材)2026年春期人教版三年级下册数学教学计划+教学进度表
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- 不说脏话从我做起主题班会PPT模板
- 大学专业排名证明(模板)
- 2023版思想道德与法治专题4 继承优良传统 弘扬中国精神 第2讲 做新时代的忠诚爱国者
- 林义《社会保险基金管理》(第2版)笔记和课后习题详解
- 2023年安徽汽车职业技术学院单招职业适应性测试题库及答案解析
- 拉丁舞比赛服饰装饰元素的演变,服装设计论文
- YY/T 0698.2-2022最终灭菌医疗器械包装材料第2部分:灭菌包裹材料要求和试验方法
- 二次函数中几何图形的最值问题课件
评论
0/150
提交评论