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