程序设计基础第8章补充-编译预处理命令_第1页
程序设计基础第8章补充-编译预处理命令_第2页
程序设计基础第8章补充-编译预处理命令_第3页
程序设计基础第8章补充-编译预处理命令_第4页
程序设计基础第8章补充-编译预处理命令_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

第八章补充 预处理命令 共140页第2页 第一节工程文件第二节编译预处理第三节库函数简介 第八章补充编译预处理 共140页第3页 内部函数 静态函数 只能在本文件中使用的函数外部函数 可被其它文件调用的函数 一 基本概念 二 函数定义 内部函数 static类型说明符函数名 形参表 外部函数 extern类型说明符函数名 形参表 可缺省 8 b1工程文件 共140页第4页 1 一个程序或一个文件中可以有多个函数 但是一个函数只能在一个文件中 2 内部函数局部于本文件 使程序各模块之间相互独立 所有的内部函数都必须用static说明 3 外部函数在不同文件中可以互相调用 当被调用函数在另一个文件中 无论该函数是什么类型 都必须用extern说明被调用函数是 外部 函数 如果被调用函数在本文件中 则可缺省说明 关于内部函数和外部函数的说明 8 b1工程文件 共140页第5页 例 下列程序由两个文件组成 请分析运行结果 li 9 3 1 intx 10 定义外部变量x和y inty 10 voidadd void y 10 x x 2 main externvoidsub 说明sub是void型的外部函数 x 5 add sub 分别调用函数 printf x d y d n x y getch li 9 3 2 C voidsub void 函数sub定义在另一个文件中 externintx 说明定义在另一个文件中的外部变量x x 5 8 b1工程文件 共140页第6页 关于工程文件 LI 9 3 prj LI 9 3 1 CLI 9 3 2 C 运行结果 x 25 y 25 建立工程文件 prj 将所有需要的文件名写在工程文件中 使用project菜单项完成建立工程工作 8 b1工程文件 例li 9 3 prj 共140页第7页 8 b2编译预处理 编译预处理是在编译源程序之前对程序的加工 由编译系统中的预处理程序对程序中的预处理命令行进行 C中的预处理命令特点 以 开头结尾不加分号 不是语句 可以出现在程序中的任何位置 其作用域为定义开始到程序结束 C的特点之一是使用预处理命令和具有预处理的功能 一 C中的预处理 共140页第8页 C的源程序预处理编译目标程序 C OBJ 编译系统中有 预处理程序编译程序 8 b2编译预处理 宏替换 defineN20文件包含 include条件编译if C中的预处理命令分类 共140页第9页 宏定义有两种类型 1 字符串宏替换 在预处理时 用宏替换体替换程序中自宏定义之后出现的所有的宏名 8 b2编译预处理 一 宏定义1 一 宏定义 define标识符字符串 C的编译程序调用预处理程序检查有否宏名 若有 用宏替换体将其替换 完成之后 将替换后的源程序交该编译程序 字符串替换带参数的宏替 格式 功能 例如 definePI3 14159 共140页第10页 用途 常用的符号常数 PI 3 14159自然对数的底 2 71828数组的长度 defineN10 编译之前用10替换所有的N inta N 说明 通常放在程序开头 不加分号 是代替 不是赋值 不作语法检查 可将多个语句或表达式定义为成一个宏替换 8 b2编译预处理 一 宏定义2 区别变量和关键字 习惯用大写 共140页第11页 defineR3 0 definePI3 145926 defineL2 0 PI R defineSPI R R 双引号中的不替换 有效范围 从定义开始到程序结尾 例 definePI3 14159main printf PI f n PI 结果 PI 3 14159 main printf PI f n PI 8 b2编译预处理 一 宏定义3 可以嵌套定义 后定义的宏可以包含先定义的宏名 结果 PI PI 共140页第12页 函数调用影响运行时间 源程序无变化宏展开影响编译时间 通常使源程序加长 8 b2编译预处理 一 宏定义4 函数调用有一个返回值宏可以有多个结果 共140页第13页 8 b2编译预处理 二 文件包含1 文件包含是指一个程序文件将另一个指定文件的全部内容包含进来 格式 include或 include 文件名 共140页第14页 用指定文件的全部内容代换该预处理行 C程序通过 include预处理 把一个指定的文件的内容嵌入 只能包含ASCII文本文件 8 b2编译预处理 二 文件包含2 功能 说明 与 的区别 在TC标准目录下找指定文件 在用户当前目录下找指定文件 如用户当前目录下没有 再到TC标准目录下找 共140页第15页 只包含源文件 不包含可执行文件和目标文件 可以嵌套例如 file1 c需包含file2 c file2 c包含file3 c 在file1中 用两次 include include 必须将file3 h放在前面 4 一个 include只能包含一个文件 8 b2编译预处理 二 文件包含3 共140页第16页 用途 8 b2编译预处理 二 文件包含4 将符号常量 带参数的宏及构造类型的变量等定义在一个独立的文件中 为其他文件共享 程序员可将工作中积累的有价值的符号 带参数的宏定义 或一些外部变量 通用的子程序定义成一个文件 需要时 包含进源程序 使用C中的库函数 需将所在的头文件包含进源程序 共140页第17页 函数库 函数库是由系统建立的具有一定功能的函数的集合 库中存放函数的名称和对应的目标代码 以及连接过程中所需的重定位信息 用户也可根据需要建立自己的用户函数库 库函数 存放在函数库中的函数 库函数具有明确的功能 入口调用参数和返回值 8 b3库函数简介 库函数不是C语言的一部分 它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序 一 基本概念 共140页第18页 连接程序 将编译程序生成的目标码连接起生成可执行文件 头文件 也称为包含文件 C语言库函数与用户程序之间进行信息通信时要使用的数据和变量 在使用某一库函数时 都要在程序中嵌入 用 include 8 b3库函数简介 共140页第19页 I O函数包括各种控制台I O 缓冲型文件I O和UNIX式非缓冲型文件I O操作 需要的包含文件 stdio h例如 getchar putchar printf scanf fopen fclose fgetc fgets fprintf fsacnf fputc fputs fseek fread fwrite等 8 b3库函数简介 二 TubroC库函数分为9大类 共140页第20页 字符串 内存和字符函数包括对字符串进行各种操作和对字符进行操作的函数 需要的包含文件 string h mem h ctype h或string h例如 用于检查字符的函数 isalnum isalpha isdigit islower isspace等 用于字符串操作函数 strcat strchr strcmp strcpy strlen strstr等 8 b3库函数简介 共140页第21页 时间 日期及与系统有关的函数对时间 日期的操作和设置计算机系统状态等 需要的包含文件 time h例如 time返回系统的时间 asctime返回以字符串形式表示的日期和时间 数学函数包括各种常用的三角函数 双曲线函数 指数和对数函数等 需要的包含文件 math h例如 sin cos exp e的x次方 log sqrt 开平方 pow x的y次方 等 8 b3库函数简介 共140页第22页 目录管理包括 建立磁盘目录 查询 改变等对磁盘目录操作的函数 动态存储分配包括 申请分配 和 释放 内存空间的函数 需要的包含文件 alloc h或stdlib h例如 calloc free malloc realloc等 8 b3库函数简介 共140页第23页 其它函数 过程控制包括最基本的过程控制函数 字符屏幕和图形功能包括各种绘制点 线 圆 方和填色等的函数 8 b3库函数简介 共140页第24页 函数的功能及所能完成的操作 参数的数目和顺序 以及每个参数的物理意义及类型 返回值的意义及类型 需要使用的包含文件 头

温馨提示

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

评论

0/150

提交评论