从 C++98 和 C++11 过渡的早期开始,我记得在将 C++98 库和 C++11 库链接在一起时出现了一些与 ABI 相关的问题。(参见例如将不同的 C++ 标准与 GCC 混合以及该问题的答案。)
我有一个特殊的情况,我的代码的一部分需要使用仅支持 C++11 的工具进行编译,而另一部分使用 C++14 特性并且可以使用支持它们的标准 g++ 进行编译。我可以将代码的每一部分放入自己的库中并链接它们。但我想知道:一般来说,C++11 和 C++14 之间是否存在会导致(例如 ABI 相关)问题的差异?
gcc 的混淆是 stdc++ 的决定(甚至不是 gcc)。当您将宏设置为不同的状态时,它们确实不兼容,但是如果您始终如一地设置,则可以将 C++98 与 C++11 与 libstdc++ 混合使用。例如,在 RedHat 上,默认的 gcc 编译器是旧的并且不支持 C++11,因此具有较新编译器的 devtools 默认情况下将宏设置为旧 ABI,以便它们始终兼容。
所以如果你和你的 stdc++ 库一致,没问题。在 libc++ 上没问题,VS...
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |