(C语言课件)第11部分 编译预处理.ppt

(C语言课件)第11部分 编译预处理.ppt

ID:57041657

大小:153.00 KB

页数:37页

时间:2020-07-28

(C语言课件)第11部分 编译预处理.ppt_第1页
(C语言课件)第11部分 编译预处理.ppt_第2页
(C语言课件)第11部分 编译预处理.ppt_第3页
(C语言课件)第11部分 编译预处理.ppt_第4页
(C语言课件)第11部分 编译预处理.ppt_第5页
资源描述:

《(C语言课件)第11部分 编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十一部分程序结构其它问题编译预处理一、编译预处理C语言源程序编译目标模块连接可执行程序函数库C程序加工过程编译之前还有一个源代码预加工的过程有预处理命令的C源程序编译目标模块连接可执行程序函数库C程序加工过程包含有编译前的预处理的功能预处理没有预处理命令的C源程序最先做的步骤,预处理程序负责处理源程序里的所有预处理命令,生成不含预处理命令的源程序。预处理命令—加在程序中指示IDE的预处理程序进行代码处理工作的指令。预处理命令作用:简化使编程工作预处理命令C源程序中以字符#开始的命令即为预处理命令常见的预处理命令包括#include#define#undef

2、#if#else#elif#endif1.文件包含命令把指定文件内容包含到当前源文件#include<文件名>形式1#include"文件名"形式2形式1用于包含系统头文件,预处理程序到指定目录找文件(通常指定几个系统文件目录)。形式2用于包含自己的文件。预处理程序先在源文件所在的目录里找,找不到时再到指定目录中去找。处理过程在文件系统中查找指定的文件如果找到,就用找到的文件的内容取代该命令行。被包含文件里如有预处理行也会处理。#include“abc.h”……doublearea(doubler){returnPI*r*r;}abc.cpp在操作系统文件系

3、统中的头文件如果找到,用相应的头文件里的内容替代包含命令。doublearea(doubler);intfunc2();voidfunc3();enum{YES,NO};#definePI3.14159继续处理abc.h文件包含处理过程及示例doublearea(doubler);intfunc2();voidfunc3();enum{YES,NO};#definePI3.14159……doublearea(doubler){returnPI*r*r;}处理后的abc.cpp说明stdio.h,math.h等标准头文件都在系统子目录里(目录名为include

4、或h),这些文件中的内容一般包括标准函数原型系统使用的符号常量定义等。使用include命令包含这种文件相当于在源文件中写这些函数原型和定义,使编译程序能正确完成对标准库函数调用的处理。注意写程序时一定要包含必要的系统头文件。2.宏定义与宏替换#define开始,具有两种形式简单宏定义,形式#define宏名字替代正文说明替代正文可以是任意正文序列,到换行为止。如最后是“”,下一行还作为宏定义的继续。作用为宏名字定义替代正文宏展开、宏替换。预处理程序会记录宏名字及其替代正文。处理过程如果在源程序中遇到宏名字标识符时,就用替代正文替换。注意替代正文里也允许出

5、现宏名字,替代正文里宏名字会被展开。程序中的字符串如果有与宏名相同的串,将不会做替换。人们常用这种方式定义符号常量。#defineNUM30说明替代正文可以写任何东西。若定义#defineSLDstaticlongdouble程序中的SLDx=2.4,y=9.16;替换后将变成staticlongdoublex=2.4,y=9.16;例,可以写如下形式的定义#defineNOSTOPwhile(1)预处理程序做正文替换,替代正文可以是任何字符序列。#include“abc.h”……doublearea(doubler){returnPI*r*r;}abc.c

6、ppdoublearea(doubler);intfunc2();voidfunc3();enum{YES,NO};#definePI3.14159abc.h宏定义及宏替换doublearea(doubler);intfunc2();voidfunc3();enum{YES,NO};#definePI3.14159……doublearea(doubler){returnPI*r*r;}包含后的abc.cppdoublearea(doubler);intfunc2();voidfunc3();enum{YES,NO};……doublearea(doubler)

7、{return3.14159*r*r;}宏替换后的abc.cpp3.带参数宏定义#define宏名字(参数列表)替代正文注意宏名字与括号间不能有空格用逗号分隔的标识符看作参数。替换正文为任意正文序列。使用形式与函数调用类似,以类似参数的形式给出宏参数的替代段,用逗号分隔,称为宏调用。例#definemin(A,B)((A)<(B)?(A):(B))z=min(x+y,x*y);宏调用的替换分两步展开先用各实参替代宏定义替代正文里的参数;再将代换的结果代入宏调用位置预处理中将被展开为z=((x+y)<(x*y)?(x+y):(x*y));为什么加括号?使用括号

8、避免出错替代正文各参数和整段应括起,避免出错。例如#

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

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

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