【问题标题】:Replace Visual Studio standard library替换 Visual Studio 标准库
【发布时间】:2017-01-01 15:51:50
【问题描述】:

我在 Windows 上,假设我想为我的项目使用标准 C++ 库的不同实现 - 例如 libstdc++ 或 libc++。

  1. 有没有办法说服我的 Visual Studio 使用它而不是 MSVC 库,所以我仍然可以使用#include <algorithm> 而不是#include <custom/algorithm>I believe 我可以通过简单地将路径添加到我的标题到项目中来实现它,但我正在寻找更多“系统明智”的方式,所以我不会为每个项目重复它。
  2. 真的值得麻烦吗 - 特别是在现代 C++ 功能可用/符合标准方面?
  3. 如果是这样,除了可能使用其他实现中不存在的某些功能之外,这种替换还有什么缺点?
  4. 特别是,this question 的答案提到可能存在与其他库的兼容性问题 - 这是否仅适用于 Linux 世界,还是我在 Windows 上也会遇到问题?

注意:这主要是一个理论问题 - 我对 MSVC 库很好,但我真的很想了解更多关于不同 stdlib 实现的信息。

【问题讨论】:

  • “我对 MSVC 库很好” 这可以回答你的第二个问题,不是吗?如果 MSVC 足够好,则无需修复它。
  • libstdc++ 或 libc++ 不能在没有大量移植工作的情况下与 Visual Studio C++ 编译器一起使用。

标签: c++ visual-studio stl


【解决方案1】:

理论上,更换标准库实现并非不可能。使用 clang,您可以在 libc++ (clang's) 和 libstdc++ (GCC's) 之间进行选择。

然而,在实践中,stdlib 实现通常与它们附带的编译器的内部有相当基本的联系,尤其是当涉及到新添加的 C++ 功能时,对于许多编译器来说,这并不比 Visual Studio 更真实。

你能让它在大量黑客攻击的情况下工作吗?也许。值得吗?我非常怀疑。即使你成功了,你也将牺牲一个可重现的构建环境,并且将依赖于一些非常黑暗的艺术。您的项目将不可重用。

您的问题中没有任何迹象表明您为什么认为需要切换实现,但您想出的任何理由似乎都不值得麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多