第12章C语言的编译预处理.doc

第12章C语言的编译预处理.doc

ID:58839163

大小:67.00 KB

页数:9页

时间:2020-09-24

第12章C语言的编译预处理.doc_第1页
第12章C语言的编译预处理.doc_第2页
第12章C语言的编译预处理.doc_第3页
第12章C语言的编译预处理.doc_第4页
第12章C语言的编译预处理.doc_第5页
资源描述:

《第12章C语言的编译预处理.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章C语言的编译预处理C语言属于高级语言,用C语言编写的程序称为源程序,这种用高级语言编写的源程序计算机是不能直接执行的,必须经过C语言的编译系统把源程序编译成目标程序(机器指令构成的程序)并连接成可执行程序,计算机才可以执行。因此,用C语言来处理问题,必须经过程序的编写→编译及连接→运行三个主要过程。然而,为了减少C源程序编写的工作量,改善程序的组织和管理,帮助程序员编写易读、易改、易于移植、便于调试的程序,C语言编译系统提供了预编译功能。所谓的预编译功能是指:编译器在对源程序正式编译前,可以根据预处理指令先做一些特殊

2、的处理工作,然后将预处理结果与源程序一起进行编译。C语言提供的编译预处理功能主要有三种:文件包含、宏定义、条件编译。这三种功能分别以三条编译预处理命令#include、#define、#if来实现。编译预处理指令不属于C语言的语法范畴,因此,为了和C语句区别开来,预处理指令一律以符号“#”开头,以“回车”结束,每条预处理指令必须独占一行。12.1文件包含预处理“包含”的英文单词为“include”,所谓“文件包含”预处理,就是在源文件中通过“#include”命令指示编译器将另一段源文件包含到本文件中来。例如,源文件f1.c

3、中有一句“#include²f2.c²”编译预处理命令,如图12-1(a)所示。编译预处理后文件f1.c的完整结构如图12-1(c)所示。f1.c………………………………………………………………………………………………………………………#include²f2.c²………………………………………………………………………………………………f1.cf2.c(a)预编译前(b)(c)预编译后………………………图12-1文件包含编译预处理命令编译时先将f2.c(图12-1(b))的内容复制嵌入到f1.c(图12-1(a))中来,即进行

4、“包含”预处理,然后对调整好的完整的f1.c(图12-1(c))进行编译,得到相应的目标代码。换句话说,由f1.c和f2.c组成程序的目标代码(.obj)和用一个源文件(类似于图c)的目标代码(.obj)完全一样。但是用#include包含f2.c的方式编写程序可以使其他的程序重用f2.c的代码,并且使源文件简洁明了。“文件包含”指令有两种使用方式:第一种形式,用尖括号(即小于号<、大于号>)括起被包含源文件的名称:#include<文件名>第二种形式,用双引号括起被包含源文件的名称:#include²文件名²文件名按操作系

5、统的要求定义,可以包括路径信息,例如:#include#include²xyz.c²#include²c:bcmydirhead2.h²#include<文件名>方式常用来“包含”系统头文件。系统头文件一般存储在系统指定的目录中,如TurboC的include子目录。当C编译器识别出这条#include<文件名>命令后,它不搜索当前子目录,而直接到系统指定的包含子目录(即include子目录)中去搜索相应的头文件,并将搜索到的头文件的内容“包含”到“主”文件中来。#include²文件名²方式常用来“包

6、含”程序员自己建立的头文件。当编译器识别出这条#include²文件名²命令后,它先搜索“主”文件所在的当前子目录,如果没找到再去搜索相应的系统子目录。注意,所谓文件包含,指的是在“主”文件源程序中嵌入另一些源程序语句,形成一个完整的源程序去进行编译。所以只能包含源文件而不能去包含目标文件。如果源文件1中包含源文件2,而源文件2中又包含源文件3,这就是所谓的嵌套包含。例12.1将若干个系统头文件包含到本文件中来。#include#include#includevoidma

7、in(){…}其中stdio.h头文件含有与标准输入输出操作有关的函数的原型声明等,如getc、putchar函数;math.h中则是一些数学函数的原型声明;而atoi函数、exit函数等的原型声明在stdlib.h头文件中。这些都是系统头文件,存储在系统指定的include子目录中,所以程序中使用包含命令时用<>括起头文件名,以便C编译器直接搜索系统子目录,快速寻找到这些头文件。一条#include命令只能包含一个文件,若要包含多个文件就必须使用多条#include命令。一个C程序通常由多个源文件组成,每个源文件都是一个可

8、独立编译的程序单位。在将程序分解成多个源文件后,必须计划每个源文件中哪些信息其他文件可见(以源文件形式提供),哪些不可见(以目标代码形式提供)。我们通常的做法是把其他文件可见的信息放在一个称为“头文件(.h)”的源文件中,在需要的文件中用#include预编译指令包括进去。“头文件”中可以

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

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

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