不解决 C++ 某些问题的常见解释是它会破坏 ABI 并需要重新编译,但另一方面我遇到如下语句:
老实说,几乎所有 C++ 非 POD 类型都是如此,而不仅仅是例外。可以跨库边界使用 C++ 对象,但通常只要使用相同的工具和标准库编译和链接所有代码即可。例如,这就是为什么所有主要版本的 MSVC 都有 boost 二进制文件的原因。
(来自这个 SO 答案)
那么 C++ 是否有稳定的 ABI?
如果是这样,我是否可以在同一平台上混合和匹配使用不同工具集编译的可执行文件和库(例如 Windows 上的 VC++ 和 GCC)?如果没有,有没有办法做到这一点?
更重要的是,如果 C++ 中没有稳定的 ABI,为什么人们如此关注破坏它呢?