当.h文件更新时,是否应该更新库
Should library be updated, when .h file is updated?
我已经向客户发送了我们的库(.a
、.so
)以及.h
文件。
现在我在.h
文件中有一些更改。所以我的问题是,我需要发送更新的.a
、.so
还是发送.h
才能工作。
客户将用旧的.h
替换.h
文件。
这行得通吗?
这取决于您在.h文件中更新了什么。
如果你更新了一些不需要重新编译的东西(例如一些注释?),那么你可以给出更新后的.h文件。
但是,通常,我认为为了安全起见,如果更改头,重新编译整个模块是一个很好的做法(因此,您可能需要向客户端重新发送对象和库二进制文件)。
如果已经移动了成员函数声明,则绝对必须重新分发。
这是因为任何v表都将无效。
内联也将改变链接行为:旧库将导出一个修饰的非内联函数,该函数与新版本的头指定的行为不一致。
是的,你应该用.a/.so升级.h。例如,你改变了一些数据结构,现在它更大/更小了。只需更新标头,就可以得到堆损坏程序错误。
要问自己的一个问题是:"烤饼"会做什么?
我有一些项目使用scons作为构建工具。我注意到,当我更改头文件时,scons总是编译受影响的模块,但有时不觉得有必要重建它们所属的库或可执行文件。
一般来说,在向客户发布之前重新编译所有内容是一种很好的做法,但如果scons发现它不需要重建,那么实际上你应该什么都不发布。
相关文章:
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- C++17 和更新的 std::分配器是否适用于动态数量的自定义堆?
- 在这种情况下,当尝试从单独的类更新变量时,我是否需要使用指针?
- 流::seekoff 是否更新了输入序列
- 在线C++标准草案的更新是否会使指向它的链接无效?
- 这个针对单个写入器 + 读取器的发布/检查更新类是否可以使用 memory_order_relaxed 或获取/发布以提
- 自 Visual Studio 15.6.2 编译器更新以来的新 C++17 [[nodiscard]] 警告是否符合标
- 是否可以使用一系列智能指针来自动通过其索引更新其值
- 如何检查输入文件是否已更新
- 是否可以使用标准的C 线程而不是FLTK超时来更新窗口
- 是否可以执行范围添加更新,将线性函数添加到最大分段树中
- 如何检查对象属性更新是否存在 std::map 键,否则插入一个新键?
- 我的不同线程是否会看到更新后的shared_ptr对象
- 全局变量是否不断更新
- Eigen3 或其他矩阵库 2D 矩阵是否可以通过共享内存从不同的进程更新
- 是否应在几何体着色器中完全更新粒子系统
- 当.h文件更新时,是否应该更新库
- QT使应用程序检查是否有一个更新在sourceforge.net
- 在窗口中绘制之前是否有必要使更新区域无效?
- C++类函数能否判断自上次调用以来,类成员对外部类的引用是否已更新