当.h文件更新时,库是否应该更新?

时间:2014-09-19 09:27:56

标签: c++ header-files

我已经向我们的客户发送了我们的图书馆(.a.so)以及.h个文件。

现在我在.h文件中几乎没有变化。所以我的问题是,我是否需要发送更新的.a.so或发送.h

客户将使用旧.h替换.h个文件。

这会有用吗?

4 个答案:

答案 0 :(得分:1)

这取决于您在.h文件中更新的内容。

如果您更新了不需要重新编译的内容(例如一些注释?),那么您可以只提供更新的.h文件。

但是,一般,我认为为了安全起见,如果你更改标题,那么重新编译整个模块是一个很好的做法(所以,你可能想要向您的客户端重新发送对象和库二进制文件。)

答案 1 :(得分:1)

如果你移动了一个成员函数声明,你绝对必须重新发布。

这是因为任何v表都将失效。

内联也会改变链接行为:旧库将导出一个修饰的非内联函数,该函数与新版本标题指定的行为不一致。

答案 2 :(得分:0)

是的,您应该使用.a / .so升级.h。例如。你已经改变了一些现在更大/更小的数据结构。只需更新标题即可获得堆腐败错误。

答案 3 :(得分:0)

要问自己的一个问题是:什么是“scons'办?

我有一些使用scons作为构建工具的项目。我注意到当我更改头文件时,scons总是编译受影响的模块,但有时并不觉得需要重建它们是组件的库或可执行文件。

一般来说,在向客户发布之前重新编译所有内容是一种好习惯,但如果scons发现它不需要重建,那么事实上你应该什么都不发布。