gpt4 book ai didi

C++11 与现有库/框架的兼容性

转载 作者:可可西里 更新时间:2023-11-01 16:07:10 26 4
gpt4 key购买 nike

我想知道一些我还没有找到令人信服的答案的问题。

情况:

  • 带有一些库(例如 gtkmm)的系统在未启用 c++11 的情况下编译。
  • 在启用 C++11 的情况下编译的应用程序。
  • 两者均使用相同的 GCC 版本/环境进行编译和链接。
  • 应用程序对使用 std::string 和 std::vector 的库有一些函数调用。

std::string 和 std::vector 都支持移动语义,这很可能意味着它们与非 C++11 变体不二进制兼容。然而,应用程序和库都是使用相同的编译器和标准库构建的,因此如果库能够识别并支持它就不会那么奇怪了。

上述情况是否安全,或者是否真的需要使用 C++11 标志编译所有内容,即使使用相同的构建环境?

最佳答案

This页面专用于 c++11 到 4.7 版的 g++ abi 中断。第一句话是:

The C++98 language is ABI-compatible with the C++11 language, but several places in the library break compatibility. This makes it dangerous to link C++98 objects with C++11 objects.

虽然有一些示例,其中启用 c++11 不会破坏 ABI 兼容性:一个示例是 Qt,您可以在其中自由混合启用 c++11 的构建与 c++03 构建。

关于C++11 与现有库/框架的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com