第11章预处理命令与程序组织.PPT

上传人:本田雅阁 文档编号:3123668 上传时间:2019-07-13 格式:PPT 页数:17 大小:725.52KB
返回 下载 相关 举报
第11章预处理命令与程序组织.PPT_第1页
第1页 / 共17页
第11章预处理命令与程序组织.PPT_第2页
第2页 / 共17页
第11章预处理命令与程序组织.PPT_第3页
第3页 / 共17页
第11章预处理命令与程序组织.PPT_第4页
第4页 / 共17页
第11章预处理命令与程序组织.PPT_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《第11章预处理命令与程序组织.PPT》由会员分享,可在线阅读,更多相关《第11章预处理命令与程序组织.PPT(17页珍藏版)》请在三一文库上搜索。

1、第11章 预处理命令与程序组织,回顾,文件的定义 FILE *fp; 文件的打开 fopen 文件的读和写 fscanf/fprintf 文件的关闭 fclose,教学目标,编译预处理 不带参数的宏定义 带参数的宏定义,编译预处理,功能:一个源文件可将另一个源文件的内容全部包含进来 一般形式: #include #include “文件名“ 处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件做一个源文件编译。, 直接按标准目录搜索 “ “ 先在当前目录搜索,再搜索标准目录 可指定路径,编译预处理,被包含文件内容 源文件(*.c) 头文件(*.h) 文件包含可嵌套,宏定

2、义 数据结构定义 函数说明等,不带参数的宏定义,一般形式: #define 宏名 宏体 功能:用指定标识符(宏名)代替字符序列(宏体) 定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束,#define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World“);,宏体可缺省,表示宏名定义过或取消宏体,不带参数的宏定义,#undef可终止宏名作用域: #undef 宏名,不带参数的宏展开,宏展开:预编译时,用宏体替换宏名-不作语法检查 引号中的内容与宏名相同也不置换,如 if(x=YES) pr

3、intf(“correct!n“); else if (x=NO) printf(“error!n“); 展开后: if(x=1) printf(“correct!n“); else if (x=0) printf(“error!n“);,例 #define PI 3.14159 printf(“2*PI=%fn“,PI*2); 宏展开:printf(“2*PI=%fn“,3.14159*2);,不带参数的宏展开,宏定义可嵌套,不能递归 宏定义中使用必要的括号(),#define MAX MAX+10 (),例 #define WIDTH 80 #define LENGTH WIDTH+40

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

5、efine 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);,带参数的宏定义,读程序写结果 # include # define f(x) x*x*x int main() int a=3,s,t; s=f(a+1); t=f(a+1); printf(“%d,%dn“,s,t); return 0; ,运行结果: 10,64,带参数的宏定义,读程序写结果 # include # define PI 3.5 # define S(x) PI

6、*x*x int main() int a=1,b=2; printf(“%4.1fn“,S(a+b); return 0; ,运行结果: 7.5,宏定义和函数,#define MAX(x,y) (x)(y)?(x):(y) . int main( ) int a,b,c,d,t; . t=MAX(a+b,c+d); 宏展开:t=(a+b)(c+d)?(a+b):(c+d);,int max(int x,int y) return(xy?x:y); int main( ) int a,b,c,d,t; . t=max(a+b,c+d); ,例 用宏定义和函数实现同样的功能,带参的宏与函数区别,总结,编译预处理 不带参数的宏定义 带参数的宏定义,Thank you,Question?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1