第十二章编写大程序.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编写大程序 把程序分成多个源文件有许多显著的特点 把相关的函数和变量分组放在同一个文件中可以使程序的结构清晰 可以分别对每一个源文件进行编译,单独修改,单独编译; 把函数归类分组放在不同的源文件中更利于复用 把程序分成多个源文件引发的问题 某个文件中的函数如何调用定义在其他文件中的函数呢? 函数如何访问其他文件的外部变量? 2个文件如何共享一个宏定义或类型定义? #include指令的使用 #include 文件名 引用C语言自身库的头文件 搜寻:系统头文件所在的目录 #include “ 文件名” 引用所有的头文件,包含自己编写的头文件 搜寻:先搜寻当前目录,然后搜寻系统头文件所在的目录 也可指定目录: #include “c:\**\*.h” 构建包含多文件的大型程序的步骤: 编译: 对程序中的每个源文件分别进行编译, 编译器会产生一个包含目标代码的文件。 链接:链接器把上一步产生的目标文件和库函数的代码结合在一起生产可执行的程序。 链接器的作用:解决编译器遗留的外部引用问题,即一个文件中的函数调用另外一个文件中定义的函数或变量。 * 第十二章:编写大型程序 * C程序结构 … 常见的C程序由多个源文件组成;还有一些头文件。 源文件: 函数的定义和外部变量 头文件: 可以在源文件直接共享的信息 C程序 源程序文件1 源程序文件2 源程序文件n 预编译命令 函数1 函数m 说明部分 执行部分 … 答案: #include指令 共享类型定义 在程序中有2个文件 #include boolean.h: 共享函数原型 当 prog.c 被编译时, file3.h将被编译2次,导致重定义错误. * 保护头文件 为了保护头文件,用 #ifndef-#endif来封闭文件的内容。 #ifndef BOOLEAN_H #define BOOLEAN_H #define TRUE 1 #define FALSE 0 typedef int Bool; #endif * 保护头文件---解决办法 完整案例分析——文本格式程序 这个程序分成3个文件 word.c: 读单词的相关函数 line.c: 行缓冲相关的函数 justify.c: 主调函数 对应3个头文件: word.h: word.c中的函数原型 line.h: line.c中的函数原型 word.h #ifndef WORD_H #define WORD_H ? /********************************************************** * read_word: Reads the next word from the input and * * stores it in word. Makes word empty if no * * word could be read because of end-of-file. * * Truncates the word if its length exceeds * * len. * **********************************************************/ void read_word(char *word, int len); ? #endif line.h #ifndef LINE_H #define LINE_H ? /********************************************************** * clear_line: Clears the current line. * **********************************************************/ void clear_line(void); ? /********************************************************** * add_word: Adds word to the end of the current line. * * If this is not the first word on the line, * * puts one sp

文档评论(0)

gl5000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档