在中间添加新的静态成员是否会破坏C ++库的二进制兼容性?

时间:2013-02-01 10:34:32

标签: static-members binary-compatibility

我有一个有很多静态成员的类,但是我在头文件的中间添加了新函数。

这会破坏二进制兼容性吗?客户需要重新编译吗?

编辑(1):类只有静态函数,没有其他函数和数据成员

1 个答案:

答案 0 :(得分:3)

您的班级没有虚拟功能,因此您的新中间函数不会更改 v-table 。类中的其他静态成员(函数和全局变量/数据)由Linux,Unix或Mac上的相应符号名称调用,并且您的更改是向后兼容的。

但是在Windows上这是一个重大变化,因为所有函数都是由序号而不是名称调用的(除非您使用 def 文件来定义函数的自定义序数)。

尝试使用abi-cc工具自动检查库的后向二进制兼容性。