编译预处理考点分析

编译预处理考点分析

ID:44644850

大小:52.42 KB

页数:4页

时间:2019-10-24

编译预处理考点分析_第1页
编译预处理考点分析_第2页
编译预处理考点分析_第3页
编译预处理考点分析_第4页
资源描述:

《编译预处理考点分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第9章编译预处理考点分析所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)Z前所作的工作。预处理是c语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将口动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。—、考试要点1、宏定义在c语言源程序小允许用一个标识符來表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏

2、定义命令完成的。宏代换是由预处理程序自动完成的。在C语言屮,“宏”分为有参数和无参数两种。下面分别讨论这两种“宏”的定义和调用。(1)无参宏定义无参宏的宏名后不带参数。其定义的一般形式为:#define标识符字符串其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。(2)带参宏定义C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用屮的参数称为实际参数。对带参数的宏,在调用中,不仅要

3、宏展开,而且要用实参去代换形参。带参宏定义的一•般形式为:^define宏名(形参表)字符串在字符串中含冇各个形参。带参宏调用的一般形式为:宏名(实参表):2、文件包含19文件包含是C预处理程序的另一个重要功能。文件包含命令行的一般形式为:^include"文件名〃在前面我们已多次用此命令包含过库函数的头文件。例如:#include"stdio.h〃ftinclude^math.h"文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。对文件包含

4、命令述要说明以下几点:1)包含命令屮的文件名可以用双引号扌舌起来,也可以用尖括号扌舌起来。2)一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。3.文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。3、条件编译预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍:1.第一种形式:#ifdef标识符程序段1#clse程序段2#endif它

5、的功能是,如果标识符己被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),木格式屮的#else可以没有,即可以写为:#ifdef标识符程序段#endif2.第二种形式:ttifndef标识符程序段1#clse程序段2#endif与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被ttdefine命令定义过则对程序段1进行编译,否则对■程序段2进行编译。这与第一种形式的功能正相反。3.第三种形式:#if常量表达式程序段1#el

6、se程序段2#endif它的功能是,如常量表达式的值为真(非0),贝U对程序段1进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能4、本章小结1.预处理功能是c语言特有的功能,它是在对源程序正式编译前山预处理程序完成的。程序员在程序中用预处理命令來调用这些功能。2.宏定义是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或农达式。在宏调用中将用该字符串代换宏名。3.宏定义可以带有参数,宏调用吋是以实参代换形参。而不是“值传送”。4.为了避免宏代换时发牛错误,宏定义中的字

7、符串应加括号,字符串中出现的形式参数两边也应加括号。5.文件包含是预处理的一个重要功能,它可用來把多个源文件连接成一个源文件进行编译,结果将住成-个目标文件。6.条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。7.使川预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。二、典型例题分析例10.1C标准库函数中,数学函数的原型在头文件中。(2005年1月份安徽省计算机水平考试二级《C语言程序设计》试题)A)stdio.hB)mat

8、h.hC)string.hD)ctype.h答案:B解析:stdio.h包含了标准输入输出函数;math.h包含了数学函数;string.h包含了字符串函数;ctype包含了几个判断C字符类型的函数。例10・2设有宏定义#defineM(x)x<0?-1:x==0?0:1则表达式”M(3.0)+1”的值是0(2005年1刀份安徽省计算机水平考试二级《C语言程序设计》试题)A)-1B)0C)1D)2答案:D解析:运算时用3.0替换宏屮的x进行

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

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

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