c语言中的编译预处理技术及其灵活运用

c语言中的编译预处理技术及其灵活运用

ID:4158884

大小:153.12 KB

页数:2页

时间:2017-11-29

c语言中的编译预处理技术及其灵活运用_第1页
c语言中的编译预处理技术及其灵活运用_第2页
资源描述:

《c语言中的编译预处理技术及其灵活运用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1998年6月uterApplicationsJun.1998C语言中的编译预处理技术及其灵活运用魏灿秋四川联合大学蒲小琼成都纺织专科学校四川õ成都(610064)摘要编译预处理是C语言一个重要且特别的功能,在进行C语言程序设计时,灵活使用编译预处理技术可使源程序模块化结构好,更加清晰和便于阅读,并易于调试和移植。关键词编译预处理,包含文件,宏定义,条件编译理程序只按编译系统所设的包含文件缺省路径寻找1什么是编译预处理文件名;若用“”括住一个含有路径的文件名,则预处在C语言的编译系统中存在预处理程序模块,理程序首先搜索该路径所指目录,若未找到所指文其功能是:在对一个源

2、程序进行编译时,预处理程序件,则再到编译系统的缺省设定目录下搜索。许多C首先对源程序进行扫描,对C语言中的几种预处理语言初学者不明白此点,常常在编译时发生找不到语句进行分析和处理。经过预处理之后,才进行正式包含文件的错误。编译以形成目标代码。因此,若想将自己所写的另一段源程序嵌入目书写源程序时,一般将预处理语句置于开头部前被编译程序中,应注意被嵌入源程序位于哪个目分,每一条预处理语句以“#”开始。C语言的初学者录之下。一般情况下,最好将所有源程序放在同一目都会遇到必须使用的包含文件语句“#include”就属录下,在#include语句中用双号“”指明路径,在编于预处

3、理语句。预处理语句主要有包含文件、宏定译时就不会发生找不到包含文件的错误。义、条件编译三类。另一个需要明确的概念是:任何一个C程序都对包含文件,预处理程序要将被包含的文件之是由一个主函数main()和一些自定义函数及对库源代码嵌于被编译程序的相应位置,参加正式的编函数的调用构成的,程序的执行从主函数开始。在程译以目标代码生成;对宏定义,预处理程序要对相应序中若有对某一函数的调用,则需用#include语句符号进行宏替换;对条件编译,预处理程序要根据条嵌入相应的头文件(如stdio.h)。但相应头文件中的件确定源程序中的哪些部分要参加正式编译形成目代码是对相应函数的原型

4、及符号常量等进行说明和标代码,哪些部分不形成目标代码。以下就三类预处定义;而库函数的函数体代码则是以目标代码的形理语句进行分别讨论。式存于库中的,在进行连接时方连入执行代码中。2包含文件语句#include3宏定义C语言的初学者一开始都会接触到#include宏定义有符号常量宏定义和带参数的宏定义两语句,即使是最简单的C语言程序也需要将象种。符号常量宏定义的目的是给在C程序中出现的stdio.h这样的文件包含入自己所设计的源程序之常量定义一个便于阅读理解的名字;带参数的宏定中。但许多有关C语言程序设计的书中未明确说明义可用一个直观的名称实现一定的函数功能。二者编译程序

5、对它的处理方法。均可提高程序的可读性,使程序中相应的常量、参数预处理程序对#include语句的处理方法是:将便于修改。#include语句所指的文件(源程序)代码完全嵌于符号常量定义语句的一般格式是:被编译程序中#include所在的位置,以参加正式编#define符号常量名常量值译形成目标代码。符号常量名一般用大写字母表示。例如,在程序包含文件语句的一般形式为中若多次使用“ESC”和“Ctrl+Z”键,由于它们的#include〈文件名〉ASCII码为0X1A和0X1B,则可在程序开头使用语或#include“文件名”句我们在进行一个C语言编译系统的安装时,一#d

6、efineCTRL2Z0X1A般要按安装步骤提示形成一个缺省包含文件搜索路#defineESC0X1B径。如果#include语句中用〈〉括住文件名,则预处在源程序中即可使用常量名“Ctrl2Z”和“ESC”3收稿日期:199721226魏灿秋硕士,讲师。研究方向:计算机应用。蒲小琼讲师。第18卷第6期计算机应用Vol.18,No16第6期魏灿秋等:C语言中的编译预处理技术及其灵活运用55以便于阅读理解。编译时,预处理程序则将相应略。ASCII码值替换到“Ctrl2Z”和“ESC”出现处,以便正例如,我们在源程序中有一段打印输出程序,要式编译形成目标代码。适用于激光打

7、印机或针式打印机。由于激光打印机需要指出的是,预处理程序对符号常量的替换和针式打印机的分辨率及编程方法不一样,需用不不作语法检查,只是原样替换。我们在进行宏定义语同的程序模块实现。句书写时要小心避免错误,以免在正式编译时出现假设现在需要将激光打印机的程序模块进行编语法错误。译,则源程序中有关打印部分可以书写如下带参数的宏定义一般形式为#defineLASER1#define宏名(参数表)表达式⋯⋯例如,在源程序中要使用到求a、b中两个值较#ifdefLASER小值的函数,可在程序开头作下面的宏定义激光打印模块#defineMIN(a,b)((a)<(

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

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

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