- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第14章预处理命令、文件包含为了能够更好更灵活的使用C语言,本章将C语言中最后一部分很重要的知识来介绍一下,主要是关于如何灵活组织工程和如何使用系统功能与资源的。
14.1预处理命令的作用预处理命令就是C语言提供的一类很强大的命令!它可以控制编译器在进行编译链接之前,对写的代码进行一些其它的处理。所谓的预处理就是在编译之前对程序的处理,所以预处理命令也叫做是预编译命令。这一节就来看看C语言中功能强大的预处理命令。
C语言的编译器,主要完成两个作用:(1)如果我们写的程序中有预处理命令,就根据预处理命令对程序做一些前期的处理,否则什么都不做。(2)对经过预处理过的程序进行编译生成计算机可以识别的二进制文件。这两个作用可以通过下图,一个简化了的程序生成过程看出来。实际的过程要比这个复杂的多,不过这个图足以说明我们的问题了。
14.1.1程序预处理我们知道编译器的第一个作用,就是在将程序编译成二进制文件之前,根据本次编译需求和环境约束对程序做一些前期的处理,这个前期的处理被称为是程序的预处理。我们写的代码,进入编译器之后,如果不经过预处理的话,里面的关键字、标识符、语句等等就都是定死了,再也无法修改了。如果在这个时候,你还想对程序再做一些修改的话,就必须进行预处理。否则,就得在程序还没有进入编译器之前,自己手动修改代码。C语言的预处理提供了一些机制可以让你的程序使用一些代码,这样就可以免去你的很多重复劳动了。
14.1.2预处理命令C语言预处理命令用来指导编译器对程序进行预处理的。这些命令有的是通用的,由C语言标准规定的。有的是特殊的,只能在某些编译器中使用。C语言预处理命令的形式如下所示:#预处理关键字其他这个表示形式中,“#”符号是预处理命令特有的符号。C语言中凡是出现“#”号的地方一定是预处理命令,编译器通过“#”号来将我们写的程序和预处理命令区分开的。“预处理关键字”是一些指导编译器的特殊命令关键字。“其他”是根据要处理的命令不同而不同的,没有统一的规则。
14.1.3C语言的几类预处理命令C语言提供了三类预处理命令,指导编译器来完成对程序不同层次上的修改,它们分别是:宏定义、预编译控制和头文件包含。
14.2C语言中的宏定义C语言中的宏定义是预处理命令的一种,也是最简单最直接的对程序进行修改的一种预处理命令。它是让编译器在程序预处理的时候对符号、文字、标识符等进行直接的替换。对程序中的某些符号、文字、标识符等等进行直接替换之后,我们的程序就会变成另外的样子了。
14.2.1C语言的宏定义形式C语言中的宏定义是通过对程序中的某些部分实现直接替换来达到对程序修改的目的的。那它是如何实现的呢?答案很简单,是通过预处理命令来实现的!C语言中的宏定义命令是一个标准规定的命令,也就是说只要是个C语言编译器,都是支持宏定义命令的!C语言宏定义的命令是使用关键字define表示的。结合C语言预处理命令的一般形式,可以推测出C语言宏定义的一般形式,如下所示:#define其他C语言宏定义的一般形式确实是这样的,以“#”号开头,接着是预处理命令关键字define,最后是其它一些所需的东西。
这个一般形式确实没错,但是它还是太简单了,C语言中的宏定义形式稍微要比它复杂。复杂的地方就是C语言规定了“其他”部分的形式。“其他”部分主要是完成宏定义的替换工作的,“替换”是将一个东西换成另一个东西。所以,“其他”就是规定替换和被替换这两个东西的形式的。因而一个完整的宏定义的形式,如下所示:#define被替换的内容替换为的内容
例如,要写一个程序,实现的功能是在窗口中写一个水果的名字,但是具体写什么事先还不知道,得根据具体的环境才能知道。这样的话,我们直接在程序中写个“Fruit”就行,在具体的应用中,我们再将“Fruit”替换成具体的水果名。我们这次要写个苹果,就直接定义“Fruit”为“Apple”就可以了。#defineFruitApple下次需要的是橘子,就把“Fruit”定义为“Orange”就可以了。#defineFruitOrange
14.2.2不带参宏定义C语言中的宏定义主要有两种:不带参的宏定义和带参的宏定义。不带参的宏定义是最简单的一种,直接实现文字符号的替换,不会再有任何的改变了,之前见到的都是不带参的宏定义。它的形式如下所示:#define被替换的符号文字替换符号文字不带参的宏定义将程序中的所有东西都看成是符号和文字,它直接根据预处理命令define对符号文字进行替换就可以了,简单直接!
例如,从下面的程序中就可以看出,宏定义的替换是只认符号文字的。如果没有宏定义的话,这个程序是很难解释通的。程序中没有定义num_b,但是确给它赋值了?程序的输出也是很诡异
您可能关注的文档
- 寻找大客户的六个步骤.pptx
- 弘扬师德师风演讲稿.docx
- 冬季安全警钟长鸣演讲稿.docx
- 教与学发言稿.docx
- 小儿急性播散性脑脊髓炎预防和措施.pptx
- 家庭度假旅游摄影电子相册课件模板26页课件.ppt
- 室外给排水管道专项施工方案.docx
- 《大学生就业与创业指导》教案---第11课-求职准备.pdf
- 导游基础知识试题100题.docx
- 2025堵漏工具操作步骤.docx
- 220kV变电站主变压器泡沫喷淋灭火系统防误动控制方案研究.docx
- 2024消防水泵房施工方案.docx
- 密闭电石炉净化系操作说明--课件.ppt
- 小儿大动脉炎的科普知识.pptx
- 【备战25年高考数学】题型06 7类三角函数与三角恒等变换解题技巧(原卷版).docx
- 【备战25年高考数学】题型06 7类三角函数与三角恒等变换解题技巧(原卷版) (2).docx
- 2011年高考数学试卷(理)(天津)(空白卷).docx
- 【备战25年高考数学】题型08 10类球体的外接球及内切球解题技巧(解析版).docx
- 【备战25年高考数学】题型09 6类圆锥曲线离心率解题技巧(解析版).docx
- 【备战25年高考数学】题型08 10类球体的外接球及内切球解题技巧(原卷版).docx
文档评论(0)