C语言课件(编译预处理)_第1页
C语言课件(编译预处理)_第2页
C语言课件(编译预处理)_第3页
C语言课件(编译预处理)_第4页
C语言课件(编译预处理)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译预处理编译预处理编译预处理编译预处理文件包含文件包含宏定义宏定义无参无参有参有参条件编译条件编译程序设计举例程序设计举例C C语言程序设计语言程序设计简介简介预处理预处理(preprocessing)在实施代码转换之前进行。在实施代码转换之前进行。包括:包括:包含其它文件包含其它文件定义宏定义宏有条件的编译程序代码有条件的编译程序代码预处理命令预处理命令(preprocessor directive)的格式的格式以以#开头的一行(可以占多行)开头的一行(可以占多行)#前面只能出现空白符前面只能出现空白符编译预处理编译预处理文件包含文件包含#include把所包含的文件的内容放到指令所在的地

2、方。把所包含的文件的内容放到指令所在的地方。两种形式:两种形式:#include 只在指定存放头文件的目录下(只在指定存放头文件的目录下(IDE的的include子目录下)查找该文件。子目录下)查找该文件。#include filename“ 首先在使用文件包含命令的源文件所在目录下查找该文件;首先在使用文件包含命令的源文件所在目录下查找该文件; 若未找到,再到指定存放头文件的目录下去查找。若未找到,再到指定存放头文件的目录下去查找。好处:好处:当许多程序中需要用到一些共同的常量、数据等资料时,可以把这当许多程序中需要用到一些共同的常量、数据等资料时,可以把这些共同的东西写在以些共同的东西写在

3、以.h作为扩展名的头文件中;作为扩展名的头文件中;如果哪个程序需要用时,就可用文件包含命令把它们包含进来,省如果哪个程序需要用时,就可用文件包含命令把它们包含进来,省去了重复定义的麻烦。去了重复定义的麻烦。编译预处理编译预处理文件包含文件包含#include使用说明:使用说明:一个一个#include命令只能指定一个被包含文件,若有多个文件要包含,命令只能指定一个被包含文件,若有多个文件要包含,则需要用多个则需要用多个#include命令。命令。文件包含允许嵌套,即在一个被包含文件中又可以包含另一个文件。文件包含允许嵌套,即在一个被包含文件中又可以包含另一个文件。文件包含命令通常包含的文件是头

4、文件,即后缀是文件包含命令通常包含的文件是头文件,即后缀是.h的文件,也可的文件,也可以包含其他的源文件,例如,可包含以包含其他的源文件,例如,可包含.c文件。文件。使用文件包含命令可使多个源文件合并成一个源程序后进行编译和使用文件包含命令可使多个源文件合并成一个源程序后进行编译和运行。运行。编译预处理编译预处理宏定义宏定义#define用一个标识符来表示一个字符串,称为用一个标识符来表示一个字符串,称为“宏宏”。被定义为被定义为“宏宏”的标识符称为的标识符称为“宏名宏名”。在编译预处理时,对程序中所有出现的在编译预处理时,对程序中所有出现的“宏名宏名”,都用宏,都用宏定义中的字符串去代换,这

5、称为定义中的字符串去代换,这称为“宏代换宏代换”或或“宏展开宏展开”。包括:包括:不带参数的宏定义不带参数的宏定义带参数的宏定义带参数的宏定义编译预处理编译预处理宏定义宏定义无参数的宏定义无参数的宏定义格式:格式:#define 举例:举例:说明:说明:宏定义一般写在程序的开头。宏定义一般写在程序的开头。宏名的命名规则同变量名,一般习惯用大写字母,以便与变量区别,宏名的命名规则同变量名,一般习惯用大写字母,以便与变量区别,但也允许用小写字母。宏名的前后应有空格,以便准确地辨认宏名。但也允许用小写字母。宏名的前后应有空格,以便准确地辨认宏名。宏定义必须写在函数之外,宏名的有效范围是从宏定义开始到

6、本源宏定义必须写在函数之外,宏名的有效范围是从宏定义开始到本源程序文件结束,或遇到预处理命令程序文件结束,或遇到预处理命令#undef时止。时止。编译预处理编译预处理#define PI 3.14宏定义宏定义无参数的宏定义无参数的宏定义说明:说明:宏定义不但可以定义常量,还可以定义宏定义不但可以定义常量,还可以定义C语句和表达式等。语句和表达式等。宏定义允许嵌套。宏定义允许嵌套。宏代换只是指定字符串替换宏名的简单替换,不做任何语法检查。宏代换只是指定字符串替换宏名的简单替换,不做任何语法检查。如有错误,只能在编译已被宏展开后的源程序时发现。如有错误,只能在编译已被宏展开后的源程序时发现。宏定义

7、是专门用于预处理命令的一个专用名词,只作字符替换,不宏定义是专门用于预处理命令的一个专用名词,只作字符替换,不分配内存空间。分配内存空间。当宏定义在一行中写不下,需要在下一行继续时,只需在最后一个当宏定义在一行中写不下,需要在下一行继续时,只需在最后一个字符后紧接着加一个反斜杠字符后紧接着加一个反斜杠“”。可用宏定义表示数据类型,使书写方便。可用宏定义表示数据类型,使书写方便。编译预处理编译预处理宏定义宏定义有参数的宏定义有参数的宏定义格式:格式:#define 宏名宏名(形参表形参表) 字符串字符串举例:举例:说明:说明:实参个数与形参个数相同,但没有类型要求。实参个数与形参个数相同,但没有

8、类型要求。宏名和形参表之间不能有空格出现。宏名和形参表之间不能有空格出现。如宏定义包含如宏定义包含“#”,则宏替换时将,则宏替换时将“#”去掉,并将其前后字符串去掉,并将其前后字符串合在一起。合在一起。编译预处理编译预处理#define M(a,b) a*b条件编译条件编译条件编译条件编译目的和作用目的和作用条件编译是指对源程序中某段程序通过条件来控制是否参加编译。条件编译是指对源程序中某段程序通过条件来控制是否参加编译。根据条件来选取需要的代码进行编译,以便生成不同的应用程序,根据条件来选取需要的代码进行编译,以便生成不同的应用程序,供不同用户使用。供不同用户使用。此外,条件编译还可以方便程序的逐段调试,简化程序调试工作。此外,条件编译还可以方便程序的逐段调试,简化程序调试工作。指令:指令:#if#ifdef#ifndef#else#endif编译预处理编译预处理小结小结编译预处理功能是语言特有的功能,它是在对源程编译预处理功能是语言特有的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能。预处理命令若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论