C程序设计 教学课件 ppt 作者 安俊秀 第5章 编译预处理2

上传人:E**** 文档编号:89343578 上传时间:2019-05-23 格式:PPT 页数:14 大小:179.50KB
返回 下载 相关 举报
C程序设计 教学课件 ppt 作者  安俊秀 第5章 编译预处理2_第1页
第1页 / 共14页
C程序设计 教学课件 ppt 作者  安俊秀 第5章 编译预处理2_第2页
第2页 / 共14页
C程序设计 教学课件 ppt 作者  安俊秀 第5章 编译预处理2_第3页
第3页 / 共14页
C程序设计 教学课件 ppt 作者  安俊秀 第5章 编译预处理2_第4页
第4页 / 共14页
C程序设计 教学课件 ppt 作者  安俊秀 第5章 编译预处理2_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《C程序设计 教学课件 ppt 作者 安俊秀 第5章 编译预处理2》由会员分享,可在线阅读,更多相关《C程序设计 教学课件 ppt 作者 安俊秀 第5章 编译预处理2(14页珍藏版)》请在金锄头文库上搜索。

1、第5章 预处理命令,作用:对源程序编译之前做一些处理,生成扩展C源程序 种类 宏定义 #define 文件包含 #include 条件编译 #if-#else-#endif等 格式: “#”开头 占单独书写行 语句尾不加分号,如 if(x=YES) printf(“correct!n”); else if (x=NO) printf(“error!n”); 展开后: if(x=1) printf(“correct!n”); else if (x=0) printf(“error!n”);,5.1 宏定义 不带参数宏定义 一般形式: #define 宏名 宏体 功能:用指定标识符(宏名)代替字符

2、序列(宏体),宏展开:预编译时,用宏体替换宏名-不作语法检查,如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);,宏体可缺省,表示宏名 定义过或取消宏体,定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域 格式: #undef 宏名,宏定义可嵌套,不能递归,例 #define MAX MAX+10 (),引号中的内容与宏名相同也不置换,例 #define PI 3.14159 printf(“2*PI=%fn”,PI*2); 宏展开:p

3、rintf(“2*PI=%fn”,3.14159*2);,宏定义中使用必要的括号(),例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;,带参数宏定义 一般形式: #define 宏名(参数表) 宏体,例 #define S (r) PI*r*r 相当于定义了不带参宏S,代表字符串“(r) PI*r*r”,宏展开:形参用实参换,其它字符保留 宏体及各形参外一般应加括号(),例 #define S(a,b) a*b area=S(3,2); 宏展开: area=3*2;,不能加空格,例 #defi

4、ne 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);,带参的宏与函数区别,5.2 “文件包含”处理 功能:一个源文件可将另一个源文件的内容全部包含进来 一般形式: #include “文件名” 或 #include ,处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译, 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径,被包含文件内容 源文件(*.c) 头文件(*.h),宏定

5、义 数据结构定义 函数说明等,文件包含可嵌套,例 文件包含举例,5.3 条件编译,条件编译可有效地提高程序的可移植性,并广泛地应用在商业软件中,为一个程序提供各种不同的版本。 9.3.1 #ifdef #endif 9.3.2 #ifndef #endif命令 9.3.3 #if #endif,5.3.1 #ifdef #endif命令,1一般格式 ifdef 标识符 程序段1; else 程序段2; endif 2功能:当“标识符”已经被#define命令定义过,则编译程序段1,否则编译程序段2。,5.3.2 #ifndef #endif命令,1一般格式 ifdnef 标识符 程序段1; e

6、lse 程序段2; endif 2功能:当“标识符”未被#define命令定义过,则编译程序段1,否则编译程序段2。,例:#define NUM 10 struct stuint num; char *name; ; #define STUDENT struct stu main() STUDENT *p; p=(STUDENT *)maoolc(sizeof(STUDENT); p-num=6688; p-name=“Li Jie”; #ifndef NUM printf(“Number=%dn”,p-num); #else printf(“Name=%sn”,p-name); #endif free(p); ,5.3.2 #if #endif,1一般格式 if 常量表达式 程序段1; else 程序段2; endif 2功能:当表达式为非0(“逻辑真”)时,编译程序段1,否则编译程序段2。,例: 输入一个口令,根据需要设置条件编译,使之能将口令原码输出,或仅输出若干星号“*”。 #define PASSWORD 0 /*预置为输出星号*/ main() /*条件编译*/ #if PASSWORD /*源码输出*/ #else /*输出星号*/ #endif ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号