C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt

C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt

ID:50043513

大小:124.00 KB

页数:21页

时间:2020-03-08

C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt_第1页
C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt_第2页
C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt_第3页
C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt_第4页
C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt_第5页
资源描述:

《C语言基础教程 教学课件 作者 张晓蕾 1_ 第9章 编译预处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章编译预处理宏定义9.1文件包含9.2条件编译9.39.1宏定义9.1.1编译预处理的概念编译预处理是指在编译系统对文件进行编译——词法分析、语法分析、代码生成及优化之前,对一些特殊的编译语句先进行处理,然后将处理的结果与源程序一起编译,生成目标文件。编译预处理语句都是以#开头,其结尾不带分号(;),以表示与普通程序语句相区别。编译预处理语句分为三类:宏定义、文件包含和条件编译等,它常用于程序设计的模块化、移植、调试等方面。9.1.2宏定义宏定义分为两种:不带参数的宏定义(即常量定义)与带参数的宏定

2、义。1.不带参数的宏定义不带参数的宏定义形式如下:#define标识符表达式2.带参数的宏定义带参数的宏定义中,宏替换名可以带有形式参数,在程序中用到时,实际参数会代替这些形式参数。带参数的宏定义形式如下:#define宏名(参数表)表达式3.宏的作用范围宏也具有一定的作用范围,默认情况下,宏的作用范围从定义点开始,到程序源文件的末尾。4.宏定义与函数调用带参数的宏定义有些像函数调用,但两者是不同的。带参数的宏定义与函数的区别如下:①宏定义仅是对字符串作简单替换,而函数调用则是按程序的含义来替换形式参数

3、;②宏定义仅能用于简单的单行语句替换,而函数可用于复杂运算;③宏定义仅占用编译时间,不占用运行时间,执行速度快,而函数调用、参数的传递等,都要占用内存开销;④宏定义在编译时展开,多次使用会让源程序增大,而函数调用不管多少次总占用相同的源程序空间。宏的作用范围从定义点开始,到程序源文件的末尾或使用命令#undef取消定义之前。总的来说,当语句较简单时,可考虑使用宏定义,从程序执行的速度来说,它优于函数。9.2文件包含9.2.1文件包含的意义一个大型的程序通常都是分为多个模块,由不同的程序员编写,最终需要将

4、它们汇集在一起进行编译。另外,在程序设计中,有一些程序代码会经常使用,比如程序中的函数、宏定义等。为了方便代码的重用和包含不同模块文件的程序,C语言提供了文件包含的方法。文件包含用于在一个文件中包含另一个源程序文件,前面所用到的stdio.h和string.h等头文件引用都是用包含文件预处理来完成的。文件包含的意义是源程序中包含另一个源程序文件。9.3条件编译9.3.1条件编译条件编译是指在特定的条件下,对满足条件和不满足条件的情况进行分别处理——满足条件时编译某些语句,不满足条件时编译另一些语句。1.

5、#if,#elif,#else和#endif#if用于对程序进行部分编译,用法与选择语句if相似。#elif的作用类似于elseif,用于产生多重条件编译。#endif用于结束条件编译,编译时与前面最近的#if作为一对,编译两者之间的部分程序段。条件编译有三种形式,如下所示:(1)#if…#endif#if表达式程序段#endif(2)#if…#else…#if表达式程序段1#else程序段2#endif(3)#if…#elif…#if表达式1程序段1#elif表达式2程序段2…#else表达式n程序段

6、n#endif2.#ifdef和#ifndef语句使用形式如下:(1)#ifdef#ifdef宏定义标识符/*如果标识符已定义过,则编译以下程序段*/程序段#endif(2)#ifndef#ifndef宏定义标识符/*如果标识符未定义过,则编译以下程序段*/程序段#endif9.3.2程序移植与调试1.程序移植条件编译通常用于程序的移植方面,例如,在不同的计算机系统中,相同数据类型所占用的字节是不一样的,在IBM-PC上int型数据占2个字节,而在其他计算机系统中占4个字节,这时就可以使用下面的条件编译

7、来进行处理。#ifdefIBM-PC…/*如果在IBM-PC上,编译这部分程序段*/#else…/*否则编译这部分程序段*/#endif2.程序调试在程序进行调试时也可以添加条件编译,在调试时通过printf()语句显示出程序变量的变化,而在调试完毕后利用条件编译将printf()语句屏蔽。

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

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

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