替换 Visual Studio 标准库

3

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

  1. 是否有一种方法可以说服我的Visual Studio使用它们而不是MSVC库,这样我仍然可以使用#include <algorithm>而不是#include <custom/algorithm>我相信我可以通过将头文件路径添加到项目中来实现它,但我正在寻找更多“系统级”的方法,这样我就不必为每个单独的项目重复此操作。
  2. 这样做真的值得麻烦吗?特别是在现代C++功能可用/符合标准的情况下?
  3. 如果是这样,除了可能使用其他实现中不存在的某些功能之外,会有什么缺点?
  4. 特别是,这个问题的答案提到可能存在与其他库的兼容性问题-这只适用于Linux世界,还是在Windows上也会有问题?
注意:这主要是一个理论问题 - 我对MSVC库很满意,但我真的想了解更多不同stdlib实现的情况。

1
“我对MSVC库感到满意”这样回答了你的第二个问题,是吧?如果MSVC足够好,你就不需要修复它了。 - Baum mit Augen
1
libstdc++或libc++不能在不进行重大移植工作的情况下与Visual Studio C++编译器一起使用。 - n. m.
1个回答

4
从理论上讲,更换stdlib实现并不是不可能的。使用clang编译器时,你可以选择使用libc++(clang自带)或libstdc++(GCC自带)。
然而,在实践中,stdlib实现通常与它们所附带的编译器内部密切相关,特别是在涉及到新添加的C++功能时,这对于许多编译器来说尤其如此,尤其是Visual Studio。
你能通过大量hack使其工作吗?也许可以。但这是否值得,我非常怀疑。即使你成功了,你将牺牲一个可重复构建的环境,并依赖于一些深度黑暗的技术。你的项目将无法重用。
从你的问题中没有任何迹象表明你为什么需要切换实现,但似乎很难想出任何理由值得去折腾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接