欢迎来到天天文库
浏览记录
ID:12359027
大小:153.00 KB
页数:20页
时间:2018-07-16
《第十五章 c语言模块化编程,c语言多文件编译》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十五章第十五章C语言模块化编程,C语言多文件编译所谓模块化编程,就是多文件(.c文件)编程,一个.c文件和一个.h文件可以被称为一个模块。如果你学习C语言很久了,还只会在一个.c文件里写代码,那么本章将会让你突破,带你了解多文件编程,教你学会如果有效的组织各个文件,如果将各个文件联系起来。15.1C语言头文件深入理解C语言程序中,源文件通常分为两种:一种用于保存程序的声明(declaration),称为头文件;另一种用于保存程序的实现(implementation),称为定义(definition)文件。C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀
2、。可以将.h文件的内容写在.c文件中,也可以将.c文件的内容写在.h中,但这是很不好的习惯。许多初学者用了头文件,却不明其理。在此略作说明。在以下场景中会使用头文件:·通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。·多文件编译。将稍大的项目分成几个文件实现,通过头文件将其他文件的函数声明引入到当前文件。·头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调
3、试、改错的负担。编译时只有函数声明没有函数定义是完全正确的。函数声明告诉编译器该函数已经存在,但是入口地址还未确定,暂时在此做个标记,链接时编译器会找到函数入口地址,并将标记替换掉。编译产生的.obj文件(Linux下为.o文件)已经是二进制文件,与.exe第20页共20页第十五章的组织形式类似,只是有些函数的入口地址还未找到,程序不能执行。链接的作用就是找到函数入口地址,将所有的源文件组织成一个可以执行的二进制文件。关于头文件的内容,初学者还必须注意:·头文件中可以和C程序一样引用其它头文件,可以写预处理块,但不要写具体的语句。·可以申明函数,但不可以定义函数。·可以
4、申明常量,但不可以定义变量。·可以“定义”一个宏函数。注意:宏函数很象函数,但却不是函数。其实还是一个申明。·结构的定义、自定义数据类型一般也放在头文件中。·#include,编译系统会到环境指定的目录去引用。#include"filename.h",系统一般首先在当前目录查找,然后再去环境指定目录查找。好的风格是成功的关键,版本申明、函数功能说明、注释等是C语言程序的一部分。不养成很好的习惯则不能成为C语言高手(专业人员)。C标准库中,每一个库函数都在一个头文件中声明,可以通过#include预处理命令导入。头文件只是声明,不占内存空间,编译时
5、会被合并到源文件;要想知道它的具体实现,要看头文件所声明的函数是在哪个.c文件里定义的,然后查看源代码。C标准库共包含15个头文件,可以分为3组,如何正确并熟练的使用它们,可以相应的可区分出3个层次的程序员:·合格程序员:、、、·熟练程序员:、、、·优秀程序员:、、、、、、各个头文件的具体内
6、容请查看:C语言标准库C语言头文件具有以下几个特性:第20页共20页第十五章·幂等性。可以多次包含相同的标准头文件,但效果与只包含一次相同。·相互独立。任何标准头文件的正常工作都不需要以包含其他标准头文件为前提。也没有任何标准头文件包含了其他标准头文件。·和文件级别的声明等同。必须先把某标准头文件包含到你的程序中,然后才能使用该头文件已定义或声明的东西。不能在声明中包含标准头文件。并且,也不能在包含标准头文件之前用宏定义去代替关键字。等幂性是很容易实现的,对于大多数的头文件可以使用宏保护。例如,在stdio.h中可以有如下的宏定义:复制纯文本新窗口1#ifndef_ST
7、DIO_H2#define_STDIO_H3/*主要实现部分*/4#endif在C程序员中所达成的一个约定是:C源文件的开头部分要包含所有要用到的头文件。在#include指令之前只能有一句注释语句。引入的头文件可以按任意顺序排列。如果我们自己编写的头文件可能会用到标准头文件中的定义或者声明,最好把标准头文件包含在自定义头文件的开头。这样,就不会在程序中忘记引入该标准头文件,也不会有顺序问题。这正是利用了头文件的等幂性。注意一个约定,引入标准头文件用尖括号,引入自定义头文件用双引号,例如:复制纯文本新窗口01#include
此文档下载收益归作者所有