C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt

C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt

ID:50044579

大小:261.00 KB

页数:20页

时间:2020-03-08

C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt_第1页
C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt_第2页
C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt_第3页
C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt_第4页
C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt_第5页
资源描述:

《C语言程序设计教程 教学课件 作者 葛素娟第八章 预处理命令.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章预处理命令一、预处理二、宏定义三、文件包含四、条件编译在前面的章节中已经接触到了符号常量和文件包含的使用,这两个命令都属于预处理命令。预处理,顾名思义,就是处理之前做的事,是在编译器对程序进行编译之前执行的工作。程序中所有的预处理命令都在预编译期被执行。C语言中的所有预处理命令都以字符“#”开头。C提供的预处理命令主要有三种:1.宏定义2.文件包含3.条件编译一、宏定义1.不带参数的宏定义用一个指定的标识符(即名字)来代替一个字符串,它的一般形式为:#define标识符字符串例如:#defineN10其中:#define是宏定义命令;N是标识符,称为“宏名”;10是字符串。

2、在预编译时将宏名替换成字符串的过程称为“宏展开”。例8.1举例说明不带参数的宏定义的方法。源代码如下:#include#defineN10//宏定义voidmain(){inti,a[N];for(i=0;ivoidmain(){inti,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf

3、("%d",a[i]);printf("");}说明:在编译之前,执行了宏展开。然后对宏展开后的源程序进行编译、连接、执行。经过预处理后源程序不再包括预处理命令了。在C语言较早的时期,预处理器是一个单独的程序。如今,预处理器通常和编译器集成在一起。然而,将预处理器和编译器认为是不同的程序仍然是有用的。宏名一般习惯用大写字母表示,以便与变量名相区别。使用宏名代替一个字符串,可以减少程序中重复书写某些字符串的工作量。当需要改变某一个常量时,可以只改变#define命令行,一改全改。例如:#defineN10inta[N];//数组可以存放10个元素改为:#defineN50int

4、a[N];//数组可以存放50个元素使用宏定义,可以提高程序的通用性。宏定义不是C语句,不必在行末加分号。#define命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define命令写在文件开头,函数之前,作为文件的一部分,在此文件范围内有效。可以用#undef命令终止宏定义的作用域。例如:#defineG9.8voidmain()//G开始有效{…}#undefG//使G无效f(){…//f()不能使用G}宏定义是专门用于预处理命令的一个专用名词,它与定义变量的含义不同,只作字符替换,不分配内存空间。2.带参数的宏定义带参数的宏定义不但要进行字

5、符串替换,还要进行参数替换,其定义的一般形式为:#define宏名(参数表)字符串其中:字符串中包含参数表中所指定的参数。例8.2举例说明带参数的宏定义的方法。(实参是常量)源代码如下:#include#defineS(a,b)a*b//形参voidmain(){intarea;area=S(3,2);//宏调用,实参是常量printf("%d",area);}宏展开后的代码如下:#includevoidmain(){intarea;area=3*2;printf("%d",area);}例8.3举例说明带参数的宏定义的方法。(实参是变

6、量)源代码如下:#include#defineS(r)3.1415926*r*r//形参voidmain(){floata,area;a=3.6;area=S(a);//宏调用,实参是变量printf("r=%farea=%f",a,area);}宏展开后的代码如下:#includevoidmain(){floata,area;a=3.6;area=3.1415926*a*a;printf("r=%farea=%f",a,area);}例8.4举例说明带参数的宏定义的方法。(实参是表达式)源代码如下:#include

7、.h>#defineS(a,b)a*b+2//形参voidmain(){intx=2,y=5,z;z=S(x+y,y-x);//宏调用,实参是表达式printf("%d",z);}宏展开后的代码如下:#includevoidmain(){intx=2,y=5,z;z=x+y*y-x+2;printf("%d",z);}例8.5举例说明带参数的宏定义的方法。(实参仍是表达式)源代码如下:#include#defineS(a,b)(a)*(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。