第11部分 编译预处理

第11部分 编译预处理

ID:4149289

大小:273.05 KB

页数:34页

时间:2017-11-29

第11部分 编译预处理_第1页
第11部分 编译预处理_第2页
第11部分 编译预处理_第3页
第11部分 编译预处理_第4页
第11部分 编译预处理_第5页
资源描述:

《第11部分 编译预处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十一部分编译预处理preprocessing一、编译预处理简介在编译之前,对高级语言程序的源代码进行的加工,生成编译器能处理的代码的过程。C语言源程序编译目标模块编译之前还有一个源代码预连接加工的过程可执行程序函数库C程序加工过程预处理命令—加在程序中有预处没有预指示IDE的预处理程序进理命令处理命行代码处理工作的指令。的C源预处理令的C程序源程序预处理命令作用:简化使编程工作目标最先做的步骤,预编译处理程序负责处理模块源程序里的所有预处理命令,生成不连接含预处理命令的源可执行程序。程序函数库C程序加工过程包含有编译前的预处理的功能C预处理命令C源程序中以

2、字符#开始的命令即为预处理命令常见的预处理命令有#include#if#else#elif#define#endif#undef#ifdef#ifndef问题:为什么叫命令?命令谁做事情?北京交通大学计算机与信息技术学院5教师:林友芳二、C的文件包含#include1.文件包含命令语法把指定文件内容包含到当前源文件#include<文件名>形式1#include"文件名"形式2形式1用于包含系统头文件,预处理程序到指定目录找文件(通常指定几个系统文件目录)。形式2用于包含自己的文件。预处理程序先在源文件所在的目录里找,找不到时再到指定目录中去找。北

3、京交通大学计算机与信息技术学院7教师:林友芳2.预处理过程处理过程在文件系统中查找指定的文件如果找到,就用找到的文件的内容取代整个文件包含命令行。被包含文件里如果也有预处理行也会嵌套处理。北京交通大学计算机与信息技术学院8教师:林友芳文件包含处理过程及示例处理后的abc.cppabc.h在操作系统文件doublearea(doubler);doublearea(doubler);系统中的寻找头intfunc2();intfunc2();文件voidfunc3();voidfunc3();enum{YES,NO};enum{YES,NO};#define

4、PI3.14159#definePI3.14159如果找到,用相应…的头文件里的内容abc.cpp…替代包含命令。doublearea(doubler)#include“abc.h”{…returnPI*r*r;…继续处理}doublearea(doubler){returnPI*r*r;}说明stdio.h,math.h等标准头文件都在系统子目录里(目录名为include或h),这些文件中的内容一般包括标准函数原型系统使用的符号常量定义等。使用include命令包含这种文件相当于在源文件中写这些函数原型和定义,使编译程序能正确完成对标准库函数调用的处

5、理。注意写程序时一定要包含必要的系统头文件。北京交通大学计算机与信息技术学院10教师:林友芳三、宏定义与宏替换#define#undef1.常见宏定义与宏替换简单宏定义,形式#define宏名字替代正文说明替代正文可以是任意正文序列,到换行为止。如果最后是“”,下一行还作为宏定义的继续。作用为宏名字定义替代正文宏展开、宏替换。预处理程序会记录宏名字及其替代正文。处理过程如果在源程序中遇到宏名字标识符时,就用替代正文替换。北京交通大学计算机与信息技术学院12教师:林友芳注意替代正文里也允许出现宏名字,替代正文里宏名字会被展开。程序中的

6、字符串如果有与宏名相同的串,将不会做替换。人们常用这种方式定义符号常量。#defineNUM30北京交通大学计算机与信息技术学院13教师:林友芳说明替代正文可以写任何东西。若定义#defineSLDstaticlongdouble程序中的SLDx=2.4,y=9.16;替换后将变成staticlongdoublex=2.4,y=9.16;例,可以写如下形式的定义#defineNOSTOPwhile(1)预处理程序做正文替换,替代正文可以是任何字符序列。北京交通大学计算机与信息技术学院14教师:林友芳宏定义及宏替换包含后的abc.cpp宏替

7、换后的abc.cppabc.hdoublearea(doubler);doublearea(doubler);doublearea(doubler);intfunc2();intfunc2();intfunc2();voidfunc3();voidfunc3();voidfunc3();enum{YES,NO};enum{YES,NO};enum{YES,NO};#definePI3.14159#definePI3.14159……abc.cpp……doublearea(doubler)doublearea(doubler)#include“abc.h”{{…r

8、eturn3.14159*r*r;re

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

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

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