C语言程序设计 第9章 编译预处理命令

C语言程序设计 第9章 编译预处理命令

ID:43187554

大小:56.00 KB

页数:12页

时间:2019-10-02

C语言程序设计 第9章 编译预处理命令_第1页
C语言程序设计 第9章 编译预处理命令_第2页
C语言程序设计 第9章 编译预处理命令_第3页
C语言程序设计 第9章 编译预处理命令_第4页
C语言程序设计 第9章 编译预处理命令_第5页
资源描述:

《C语言程序设计 第9章 编译预处理命令》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7章编译预处理“编译预处理”是C语言编译系统的一个组成部分。编译预处理是在编译前由编译系统中的预处理程序对源程序的预处理命令进行加工。源程序中的预处理命令均以“#”开头,结束不加分号,以区别源程序中的语句,它们可以写在程序中的任何位置,作用域是自出现点到源程序的末尾。预处理命令包括执行宏定义(宏替换)、包含文件和条件编译。1*7.1宏定义7.1.1简单宏定义定义形式:#define宏名串(宏体)如:#definePI3.14159宏定义的作用宏定义后,该程序中宏名就代表了该字符串。说明#undef终止宏定义的作用域:#undefPI2*宏定义的嵌套

2、使用#defineR3.0#definePI3.1415926#defineL2*PI*R/*宏体是表达式*/#defineSPI*R*Rmain(){printf("L=%fS=%f",L,S);}程序运行结果如下:L=18.849556S=28.274333双引号内的与宏同名的字母不作宏展开。(见上例)3*7.1.2带参数的宏定义带参数的宏定义的一般形式:#define宏名(参数表)字符串如:#defineS(a,b)a*b#definePR(x)printf("s=%f”,x)带实参的宏名展开时,宏名被宏体替换,宏体中的形参按从左到

3、右的顺序被实参替换。例如:area=S(3,2);PR(area);赋值语句展开为:area=3*2;PR(area)展开的结果是:printf("s=%f”,area);4*宏定义与函数的区别引用宏只占编译时间,不占运行时间。引用宏没有返回值。如:#definesqu(n)n*nmain(){printf("%f",27.0/squ(3.0));}程序输出结果为:27.0000005*3.宏替换的形参无类型。4.实参为表达式:函数调用是先计算出实参的值,再将值传递给形参;宏的引用是用表达式替换形参。例如:定义:#defineS(a,b)a*

4、b引用:S(a+c,b+c)展开:a+c*b+c6*7.2文件包含文件包含#include:一个源文件可以将另一个源文件的全部内容包含进来。#include命令有两种格式。(1)#include<文件名>(2)#include“文件名”7*7.3条件编译7.3.1控制条件为常量表达式的条件编译形式一:#if常量表达式程序段#endif功能:常量表达式非0时,程序段被编译。否则程序段不被编译。形式二:#if常量表达式程序段1#else程序段2#endif功能:常量表达式为非0时,程序段1被编译。否则,编译程序段28*嵌套形式:#if常量表达式1程序段1

5、#elif常量表达式2程序段2......#elif常量表达式n程序段n#else程序段n+1#endif9*7.3.2控制条件为定义标识符的条件编译1)形式一:#ifdef标识符程序段#endif功能:当标识符在该条件编译结构前已定义过时,程序段被编译。否则,程序段不被编译。10*2)形式二:#ifdef标识符程序段1#else程序段2#endif功能:当标识符在该条件编译结构前已定义过时,程序段1被编译。否则,编译程序段2。11*3)形式三:#ifndef标识符程序段1#else程序段2#endif功能:当标识符在该条件编译结构之前没有被#def

6、ine定义过时,程序段1被编译;否则,编译程序段212*

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

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

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