我正在使用Windows,假设我想为我的项目使用不同的标准C++库实现-比如libstdc++或libc++。 是否有一种方法可以说服我的Visual Studio使用它们而不是MSVC库,这样我仍然可以使用#include <algorithm>而不是#include <custom/algorithm>?我相信我可以通过将头文件路径添加到项目中来实现它,但我正在寻找更多“系统级”的方法,这样我就不必为每个单独的项目重复此操作。 这样做真的值得麻烦吗?特别是在现代C++功能可用/符合标准的情况下? 如果是这样,除了可能使用其他实现中不存在的某些功能之外,会有什么缺点? 特别是,这个问题的答案提到可能存在与其他库的兼容性问题-这只适用于Linux世界,还是在Windows上也会有问题? 注意:这主要是一个理论问题 - 我对MSVC库很满意,但我真的想了解更多不同stdlib实现的情况。
从理论上讲,更换stdlib实现并不是不可能的。使用clang编译器时,你可以选择使用libc++(clang自带)或libstdc++(GCC自带)。然而,在实践中,stdlib实现通常与它们所附带的编译器内部密切相关,特别是在涉及到新添加的C++功能时,这对于许多编译器来说尤其如此,尤其是Visual Studio。你能通过大量hack使其工作吗?也许可以。但这是否值得,我非常怀疑。即使你成功了,你将牺牲一个可重复构建的环境,并依赖于一些深度黑暗的技术。你的项目将无法重用。从你的问题中没有任何迹象表明你为什么需要切换实现,但似乎很难想出任何理由值得去折腾。