- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十五章 C语言块化编程,C语言多文件编译
C语言模块化编程,C语言多文件编译
所谓模块化编程,就是多文件(.c文件)编程,一个 .c 文件和一个 .h 文件可以被称为一个模块。如果你学习C语言很久了,还只会在一个 .c 文件里写代码,那么本章将会让你突破,带你了解多文件编程,教你学会如果有效的组织各个文件,如果将各个文件联系起来。
15.1 C语言头文件深入理解
C语言程序中,源文件通常分为两种:一种用于保存程序的声明(declaration),称为头文件;另一种用于保存程序的实现(implementation),称为定义(definition)文件。 C程序的头文件以“.h”为后缀,C 程序的定义文件以“.c”为后缀。可以将 .h 文件的内容写在 .c 文件中,也可以将 .c 文件的内容写在 .h 中,但这是很不好的习惯。许多初学者用了头文件,却不明其理。在此略作说明。在以下场景中会使用头文件:
通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功 能,而不必关心接口怎么实现的。
多文件编译。将稍大的项目分成几个文件实现,通过头文件将其他文件的函数声明引入到当前文件。
头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
编译时只有函数声明没有函数定义是完全正确的。函数声明告诉编译器该函数已经存在,但是入口地址还未确定,暂时在此做个标记,链接时编译器会找到函数入口地址,并将标记替换掉。编译产生的 .obj 文件(Linux下为 .o 文件)已经是二进制文件,与 .exe 的组织形式类似,只是有些函数的入口地址还未找到,程序不能执行。链接的作用就是找到函数入口地址,将所有的源文件组织成一个可以执行的二进制文件。关于头文件的内容,初学者还必须注意:
头文件中可以和C程序一样引用其它头文件,可以写预处理块,但不要写具体的语句。
可以申明函数,但不可以定义函数。
可以申明常量,但不可以定义变量。
可以“定义”一个宏函数。注意:宏函数很象函数,但却不是函数。其实还是一个申明。
结构的定义、自定义数据类型一般也放在头文件中。
#include filename.h,编译系统会到环境指定的目录去引用。#include filename.h,系统一般首先在当前目录查找,然后再去环境指定目录查找。
好的风格是成功的关键,版本申明、函数功能说明、注释等是C语言程序的一部分。不养成很好的习惯则不能成为C语言高手(专业人员)。C标准库中,每一个库函数都在一个头文件中声明,可以通过 #include 预处理命令导入。头文件只是声明,不占内存空间,编译时会被合并到源文件;要想知道它的具体实现,要看头文件所声明的函数是在哪个 .c 文件里定义的,然后查看源代码。C标准库共包含 15 个头文件,可以分为 3 组,如何正确并熟练的使用它们,可以相应的可区分出 3 个层次的程序员:
合格程序员:stdio.h、ctype.h、stdlib.h、string.h
熟练程序员:assert.h、limits.h、stddef.h、time.h
优秀程序员:float.h、math.h、error.h、locale.h、setjmp.h、signal.h、stdarg.h
各个头文件的具体内容请查看:C语言标准库C语言头文件具有以下几个特性:
幂等性。可以多次包含相同的标准头文件,但效果与只包含一次相同。
相互独立。任何标准头文件的正常工作都不需要以包含其他标准头文件为前提。也没有任何标准头文件包含了其他标准头文件。
和文件级别的声明等同。必须先把某标准头文件包含到你的程序中, 然后才能使用该头文件已定义或声明的东西。不能在声明中包含标准头文件。并且,也不能在包含标准头文件之前用宏定义去代替关键字。
等幂性是很容易实现的,对于大多数的头文件可以使用宏保护。例如,在 stdio.h 中可以有如下的宏定义:
复制纯文本新窗口
#ifndef_STDIO_H
#define_STDIO_H
/* 主要实现部分 */
#endif
在C程序员中所达成的一个约定是:C源文件的开头部分要包含所有要用到的头文件。在 #include 指令之前只能有一句注释语句。引入的头文件可以按任意顺序排列。如果我们自己编写的头文件可能会用到标准头文件中的定义或者声明,最好把标准头文件包含在自定义头文件的开头。这样,就不会在程序中忘记引入该标准头文件,也不会有顺序问题。这正是利用了头文件的等幂性。注意一个约定,引入标准头文件用尖括号,引入自定义头文件用双引号,例如:
复制纯文本新窗口
01 #i
您可能关注的文档
最近下载
- 大学生职业生涯规划.pdf VIP
- 2025年中国南方电网有限责任公司校园招聘考试试题及答案解析.docx VIP
- 《物业服务模式》课件.ppt VIP
- 北师大版小学数学五年级上册《尝试与猜测》说课稿.docx VIP
- 2025年大学生职业生涯规划报告 .pdf VIP
- 2025河北燕煤新能源有限公司社会招聘4人笔试备考试题及答案解析.docx VIP
- 中国宫腔镜诊断与手术临床实践指南(2023版).pptx VIP
- 2025最新初中英语词汇3500词汇表.docx VIP
- 2025河北燕煤新能源有限公司社会招聘4人笔试参考题库附答案解析.docx VIP
- 2025管理沟通4考试题及答案.doc
原创力文档


文档评论(0)