C++-库与头文件的关系

服务器管理 服务器管理 主题:1035 回复:2217

C++-库与头文件的关系

瑾兮 发布于 2016-12-26 字数 196 浏览 1092 回复 5

一般我们在头文件里写入函数的声明 在源文件里定义声明。但是我发现有些头文件里的声明,是在库中定义的 例如很多库函数,那库和源文件有什么区别的 为什么要把定义放在库里 类似标准库 而不是源文件里呢

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(5

想挽留 2017-10-26 5 楼

你可以想象下如果标准库不编译成库,你就算写个小程序都要去包含一堆源文件麻烦不麻烦,看着累不累

偏爱自由 2017-10-23 4 楼

简单的说,就是.cpp和.h的关系。
头文件就是声明,而库文件是实现。
一般而言是一一对应的,但也有可能在头文件里把功能实现了,这样也就不存在其对应的库文件了

灵芸 2017-04-08 3 楼

一般情况下编写程序的时候我们一般都会使得声明和实现相分离。这个也就是c++中的.h文件和.cpp文件存在的原因。这样使得我们有时候需要快速浏览接口的时候我们只需要查看.h文件就行了这样很快。
我认为将实现和声明分离主要是为了便于管理。
但是需要注意的问题是在编写cpp的模板的时候,必须要将实现和声明放在一个文件中,不然会出现变异错误。

想挽留 2017-03-21 2 楼

“一般”才是对的,因为头文件中也是可以定义的,只是攻城狮们一般都习惯于声明和定义分开而已。
具体点的可以去看《C++ Primer》么,这本书里比较权威。

偏爱自由 2017-01-20 1 楼

将声明(放在头文件中)和定义(放在源文件)区分开来符合接口和实现分离的原则,其他用到该类或函数接口的程序员应该仅通过声明文件就知道其用法,而不需要花费太多的时间去看定义,也就是源文件。

将源文件封装成二进制的库(比如dll 或者lib),其实就是已经将这些源文件编译成了目标文件(obj格式),再将这些obj格式的文件整合在一起,也就形成了一个库。这样让用户使用这些库的时候,有两个好处:

加快了编译的速度,因为已经编译成二进制的库了。当项目变大时,编译是很花时间的。
某些商业应用的库为了保护自己的权益,是不公开源代码的,将源代码封装成二进制的库,起到保密的作用,在卖给用户时,给用户以详细的文档说明如何使用这些库。

C++标准库是编译器的一部分。某些编译器实现厂商(例如微软的vc++)是不公开其源代码的,在使用的时候包含正确的头文件,并链接上相应的库就可以使用了。