我在 Windows 上,假设我想为我的项目使用标准 C++ 库的不同实现 - 例如 libstdc++ 或 libc++。
- 有没有办法说服我的 Visual Studio 使用它而不是 MSVC 库,这样我仍然可以使用
#include <algorithm>
而不是#include <custom/algorithm>
? I believe我可以通过简单地将标题的路径添加到项目中来实现它,但我正在寻找更多“系统明智”的方式,所以我不会为每个项目重复它。 - 这真的值得麻烦吗 - 特别是在现代 C++ 功能可用/符合标准方面?
- 如果是这样,除了可能使用其他实现中不存在的某些功能外,这种替换有什么缺点?
- 特别是 this question 的答案提到可能与其他库存在兼容性问题 - 这仅适用于 Linux 世界,还是我在 Windows 上也会遇到问题?
注意:这主要是一个理论问题 - 我对 MSVC 库没问题,但我真的很想了解更多关于不同的 stdlib 实现的信息。
最佳答案
理论上,换出 stdlib 实现并非不可能。使用 clang,您可以在 libc++(clang 的)和 libstdc++(GCC 的)之间进行选择。
然而,在实践中,stdlib 实现通常从根本上与它们附带的编译器的内部联系在一起,尤其是当涉及到新添加的 C++ 功能时,对于许多编译器而言,这并不比 Visual Studio 更真实。
你能通过大量的黑客攻击让它工作吗?或许。值得吗?我很怀疑。即使你成功了,你也会牺牲一个可重现的构建环境,并且将依赖于一些非常黑暗的技术。您的项目将不可重复使用。
在您的问题中没有说明为什么您认为需要切换实现,但您可能想出的任何理由似乎都不值得麻烦。
关于c++ - 替换 Visual Studio 标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416704/