我有一个有很多静态成员的类,但是我在头文件的中间添加了新函数。
这会破坏二进制兼容性吗?客户需要重新编译吗?
编辑(1):类只有静态函数,没有其他函数和数据成员
答案 0 :(得分:3)
您的班级没有虚拟功能,因此您的新中间函数不会更改 v-table 。类中的其他静态成员(函数和全局变量/数据)由Linux,Unix或Mac上的相应符号名称调用,并且您的更改是向后兼容的。
但是在Windows上这是一个重大变化,因为所有函数都是由序号而不是名称调用的(除非您使用 def 文件来定义函数的自定义序数)。
尝试使用abi-cc工具自动检查库的后向二进制兼容性。