C语言课件第9章-宏定义.ppt

上传人:牧羊曲112 文档编号:6504355 上传时间:2023-11-07 格式:PPT 页数:22 大小:215.49KB
返回 下载 相关 举报
C语言课件第9章-宏定义.ppt_第1页
第1页 / 共22页
C语言课件第9章-宏定义.ppt_第2页
第2页 / 共22页
C语言课件第9章-宏定义.ppt_第3页
第3页 / 共22页
C语言课件第9章-宏定义.ppt_第4页
第4页 / 共22页
C语言课件第9章-宏定义.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《C语言课件第9章-宏定义.ppt》由会员分享,可在线阅读,更多相关《C语言课件第9章-宏定义.ppt(22页珍藏版)》请在三一办公上搜索。

1、第9章 编译预处理,主要内容,宏替换文件包含条件编译预定义宏运算符和,后三节为自学内容,预处理命令:,所谓预处理,就是C编译程序对C源程序编译前由编译预处理程序对预处理命令进行处理的过程。C语言中,以“”开头(如define)的语句统称为编译预处理命令。这些命令必须在一行的开头以“”开始,末尾不加分号,以区别一般的C语句。,C语言的预处理命令,宏定义:#define,#undef文件包含:#include,9.1 宏替换,不带参数的宏定义(即符号常量定义语句)#define 宏名 替换文本编译时编译预处理程序自动对源程序中的“宏名”用“替换文本”来替换,即宏展开例如:#define LENGT

2、H 300#define PI 3.1415926,宏替换使用说明,(1)宏名一般用大写字母,以示与一般变量区别。(2)使用宏替换的作用是提高程序的清晰性、可移植性。(3)宏定义是用宏名代替一个字符串,是简单的置换,并不作语法检查。(4)宏定义语句末尾不能加分号,否则会连分号一起置换。,(5)#define 命令出现在程序中函数的外面;宏名的有效范围为:定义宏命令之后到本源文件结束。(6)可以用undef命令终止宏定义的作用域。(7)“替换文本”中可以包含已定义过的宏名。(8)“替换文本”不能替换双引号中的字符串。(9)在同一个程序段中,同一个宏名不能重复定义。,9.1.2 带参数的宏定义,一

3、般形式:#define 宏名(参数表)字符串说明:“字符串”中包含“参数表”中所指定的参数。,【例】带参数的宏定义。,#define DB(x)(x)*2)main()double y;float z=10;y=DB(z);/*等价于:y=z*2;*/printf(y=%fn,y);,定义时,最好在字符串的形参外加一个()P191,【例】,#define abs(x)(x)0)?(x):(-(x)main()int a=-3,b;float c=-2.4,d;b=abs(a);d=abs(c);printf(b=%d,d=%fn,b,d);,区别函数和带参数的宏定义:,函数调用时,先求出实参表

4、达式的值,再用这个值赋给形式参数;带参数的宏定义仅仅进行字符串的简单替换。函数调用是在程序运行时分配临时内存单元;而宏展开是在编译时进行,展开时不分配内存单元,不进行值传递。函数调用只占运行时间;宏替换只占编译时间。宏替换后使源程序增长,函数调用不会。,写出下面程序的运行结果:,#define MIN(x,y)(x)(y)?(x):(y)main()int i=10,j=15,k;k=10*MIN(i,j);printf(“%dn”,k);,答案:15,9.2 文件包含,文件包含就是在一个文件中,包含另外一个文件的全部内容。文件包含功能由include命令来实现。include命令的一般形式:

5、include“文件名”include 在一些版本的C语言中,还允许“文件名”中带路径。,#include“file2.c”,A,A,B,B,file1.c,file1.c,file2.c,包含,文件包含示意图,(a),(b),说明:,被包含的文件常以“.h”(head)结尾,用在文件头部,被称为“标题文件”或“头部文件”,如 stdio.h。其扩展名也可以为其它,如“.c”。如果需要修改一些常数,不必修改每个程序,只需修改一个文件(头部文件)即可。,【例9.8】include的使用。,#include#include main()float a,b;float c;scanf(%f%f,区别

6、“文件名”和关于include的使用,include“文件名”带双引号的文件名,系统将先在源程序所在的目录内查找指定的包含文件;如果找不到,再按照系统指定的标准方式到相关的目录中去寻找。多用于包含用户文件,include 带尖括号的文件名,系统将直接按照指定的标准方式到相关的目录中去寻找。多用于标准库函数,使用文件包含需注意:,一条文件包含命令只能包含一个文件。如果需要包含多个文件,就必须使用多条文件包含命令。文件包含的定义是可以嵌套的,即允许一个被包含的文件包含其它文件。被包含文件与其所在的文件在预编译后成为同一个文件。,课堂练习:,1、以下叙述中不正确的是:(A)预处理命令行都必须以号开始

7、(B)C程序中凡是以开始的命令行都是预处理命令行(C)C程序在执行过程中对预处理命令进行预处理(D)以下是正确的宏定义define IBM_PC,答案:C,2、在宏定义define PI 3.1415926 中,用宏名PI代替一个:(A)常量(B)单精度数(C)双精度数(D)字符串,答案:D,3、以下程序的运行结果是_ main()int b=5;#define b 2#define f(x)b*(x)int y=3;printf(%4d,f(y+1);#undef bprintf(%4d,f(y+1);#define b 3printf(%4dn,f(y+1);,答案:8 20 12,5、设有以下程序,为使之正确运行,请填入应包含的命令行。其中,tryme()函数在a:myfile1.c 中有定义。_main()printf(“n”);tryme();,#include“a:myfile1.c”,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号