不同编译器中的 C++ 标准库实现

Posted

技术标签:

【中文标题】不同编译器中的 C++ 标准库实现【英文标题】:C++ standard library implementations in different compilers 【发布时间】:2013-05-27 13:26:32 【问题描述】:

我想知道在不同的 C++ 编译器中使用了哪些 C++ 标准库。我尝试搜索它,但找不到完整的列表。

我知道msvc和icc使用Dinkumware的实现,gcc使用libstdc++,clang使用libc++。但是 Digital Mars C++、Embarcadero 的 bcc 或 IBM 的 xlC++ 呢?

【问题讨论】:

注意clang也可以使用libstdc++ 我认为当前的 icc 使用 gcc 标准库。无论如何,我很好奇你为什么需要这些信息? @user93353:在我的特殊情况下,实际上并没有那么重要。只是同事之间的讨论导致了这个问题。而且我更加好奇了,因为我无法找到这些信息的列表。 Sun,为了省略一些名字,附带两个库(一个基于 rw,另一个基于 stlport)并且还可以使用 apache 库.. 这不应该在编译器文档中吗? 【参考方案1】:

入围名单:

GCC:使用自己的 libstdc++。 MSVC:使用自己的 msvcrp,从 Dinkumware 购买,然后被肢解以解决 MSVC 糟糕的 C++ 语言支持(因此它不再是真正的 Dinkumware)。 Clang:如果传递了-stdlib=libc++ 选项,则使用 LLVM 的 libc++。它还可以使用 GCC 的 libstdc++ 以及 MSVC 的库(它在所有情况下都生成二进制兼容代码)。 ICC:在 Linux 上使用 GCC libstdc++,在 Windows 上使用 MSVC 的库。它还尝试在这些平台上模仿这两种编译器。

请注意,还有其他编译器和(独立的)C++ 标准库实现我没有在这里介绍。

【讨论】:

以上是关于不同编译器中的 C++ 标准库实现的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C++ 标准库与编译器而不是操作系统捆绑在一起?

预编译标准库头文件 - C++

c++混合使用不同标准编译潜在的问题

详解C++标准库<sstream>中的类stringstream,并利用它实现OpenCV下的图片批量读取

C++标准库(体系结构与内核分析)

模拟实现c++标准库和boost库中的智能指针