康辉C语言视频教程6

康辉C语言视频教程6

ID:43162401

大小:199.50 KB

页数:32页

时间:2019-10-01

康辉C语言视频教程6_第1页
康辉C语言视频教程6_第2页
康辉C语言视频教程6_第3页
康辉C语言视频教程6_第4页
康辉C语言视频教程6_第5页
资源描述:

《康辉C语言视频教程6》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第六章C预处理程序C的源程序在进行编译之前要经过“预处理”。C预处理程序主要完成以下三种功能:1.宏替换2.文件包含3.条件编译6.1宏替换例如:doublearea(radius)doubleradius;{return(3.1415926536*radius*radius);}#definePI3.1415926536┇doublearea(radius)doubleradius;{return(PI*radius*radius);}其中:1.由“#”开始的命令是C预处理程序处理的命令。2.#define是宏定义命令,其一般形式为:#definest

2、ring1string2表示要把源代码中出现在该行之后的每一个string1都用string2来代替。6.1.1简单宏替换说明:1.宏定义必须写在第一次使用该宏定义的代码之前;2.宏定义不是以分号结束的;3.#define、string1、string2之间至少要有一个空格;4.string1称为宏,string2称为宏扩展例如:PI是宏,3.1415926536是宏PI的宏扩展5.宏名用大写字母来表示是一个传统的习惯;6.使用宏定义的好处:1)简化程序的书写2)提高程序的可读性3)便于程序的修改4)提高程序的可移植性6.1.1简单宏替换例如:#definePI3.14

3、┇doublearea(r)doubler;{return(PI*r*r);}当要提高π的精度时,可以将宏定义#definePI3.14改为#definePI3.14159265366.1.1简单宏替换又如不同操作系统的文件结束符是不同的,有的是-1,有的是用其它字符。为此,我们用如下的宏定义:#defineEOF-1定义一个宏EOF。当系统环境改变时只需重新定义一下EOF即可方便地将程序移植到新环境上。7.预处理程序将不替换字符串中或用单引号括起来的字符常量的“宏”。6.1.1简单宏替换例如:#defineHELLO“bonjour”#defineA‘B’mai

4、n(){printf(HELLO);printf(“%c”,A);}bonjourB6.1.1简单宏替换#defineHELLObonjour#defineABmain(){printf(“HELLO”);printf(“%c”,’A’);}HELLOA6.1.1简单宏替换8.前面定义的宏名,则在后面的#define中可以被引用。例如:#definePI3.1415926536#definePISQUAREPI*PI6.1.1简单宏替换6.1.2带有参数的宏替换#define宏名(参数表)字符串其中:字符串中要包含参数表中指定的参数例

5、如:要在程序中计算大小不同的圆的面积则可定义如下的带有参数的宏:#definearea(x)(3.1415926536*x*x)main(){printf(“%f”,area(2.5));}经C预处理程序(cpp.exe)宏替换之后,将变为:main(){printf(“%f”,(3.1415926536*2.5*2.5));}其中:area(2.5)称为宏调用,其形式为:宏名(实参表)注意:1.宏定义中的“宏名”和“(参数表)”之间不能有空格。如:#definearea(x)(3.1415926536*x*x)不能写成#definearea(x)(3.1415

6、926536*x*x)6.1.2带有参数的宏替换#definearea(x)(3.1415926536*x*x)main(){printf(″%f\n″,area(2.5));}cpptest.ctypetest.imain(){printf(“%f\n”,(x)(3.1415926536*x*x)(2.5));}6.1.2带有参数的宏替换2.在定义带有参数的宏替换时,要用圆括号将宏扩展部分括起来。如:#definesquare(n)(n*n)main(){printf(“%f”,27.0/square(3.0));}3.0000006.1.

7、2带有参数的宏替换#definesquare(n)n*nmain(){printf(″%f\n″,27.0/square(3.0));}typetest.imain(){printf(″%f\n″,27.0/3.0*3.0);}27.0000006.1.2带有参数的宏替换3.带参数的宏调用和函数调用是完全不同的.宏调用是在编译之前完成的函数调用是在编译之后实现的。例:main(){inti=1;while(i<=10)printf(“%d”,square(i++));}square(n)intn;{retur

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

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

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