【问题标题】:Where to get the source code for the C++ standard library? [closed]从哪里获得 C++ 标准库的源代码? [关闭]
【发布时间】:2010-01-05 04:46:59
【问题描述】:

是否可以获得标准c++库的源代码?

【问题讨论】:

  • 请记住,您说“the 源代码”是在误导自己。 C++ 语言仅由标准描述,标准库的行为也是如此。您可以找到标准库的单个实现,而不是单个。
  • @GManNickG:此外,它至少部分内置于编译器本身。事实上,它根本不需要任何单独的代码。
  • 以下是破解 GCC libstdc++ 源代码并重建它的方法:stackoverflow.com/questions/21872229/…

标签: c++ visual-c++


【解决方案1】:

GNU 项目是免费和开源软件,包含 C++ 标准库的实现。

http://gcc.gnu.org/libstdc++/

【讨论】:

  • 我点击了mirror.clarkson.edu/gnu的链接...仍然不知道哪个是标准c++ lib
  • 真的吗?此处的任何 tarball 都应提取到标准 c++ 库源:mirror.clarkson.edu/gnu/libstdc++
  • 如果你安装了 git 试试这个 git init git remote add origin git://gcc.gnu.org/git/gcc.git git config --add remote.origin.fetch 'refs/remotes /*:refs/remotes/svn/*' git fetch git checkout -b trunk svn/trunk
  • 知道在哪个源文件中实现了 SET 吗?
  • 上面的链接现在带你到主要的 GNU gcc 页面,源代码必须用 git 下载。像 std::set 这样的类似乎主要在 ./gcc/libstdc++-v3/include/bits/stl_set.h 中定义。
【解决方案2】:

如果你有 Visual Studio Professional,它有源代码

X:\Microsoft Visual Studio 9.0\VC\crt\src

【讨论】:

  • 您甚至不必安装 Visual Studio 即可探索 Microsoft 实施。在线编译器可以提供帮助:rextester.com/NRP17506
  • @DanielLangr:谢谢。这样的事情在 8-9 年前是不存在的。
  • @DanielLangr 谢谢,这正是我所需要的。
【解决方案3】:

您的编译器安装中应该已经有源代码。如果您使用带有“跳转到包含文件”命令的 IDE,请选择任何 STL 标头并跳转到它。如果您使用的是某种 UNIX,请查看 /usr/include/c++。查看 STL 标头在哪里包含其他标头和递归 :v)。

【讨论】:

  • /usr/lib/gcc/$CTARGET/$VERSION/include/g++-v4/ 在我的标准 Linux 系统上。
  • 嗯,GCC 手册页似乎表明这是一个更可能的位置,但它在标准 OS X 中只有一些随机的低级事物(没有 STL)。也许 locate iostream 是一个好解决方案。
【解决方案4】:

就是这样:

https://github.com/gcc-mirror/gcc/tree/master/libstdc%2B%2B-v3

作为 gcc 源代码的一部分

https://github.com/gcc-mirror/gcc

这是 c++ 的标准库

我认为这是直接单击链接的唯一答案

【讨论】:

    【解决方案5】:

    libc++ is the C++ Standard Library of LLVM.

    libc++ 中的所有代码都在 MIT 许可和 UIUC 许可(类似 BSD 的许可)下获得双重许可。

    • C++11 标准定义的正确性。
    • 快速执行。
    • 最少的内存使用。
    • 编译时间快。
    • ABI 与 gcc 的 libstdc++ 的一些低级功能的兼容性,例如异常对象、rtti 和内存分配。
    • 广泛的单元测试。

    【讨论】:

      【解决方案6】:

      Win10x64 VS2017默认安装路径,源码在这里:

      第1部分:VCRuntime,其中包含随Visual Studio的每个版本而改变的代码,它包含像CRT入口点“mainCRTStartup”这样的功能,代码在这里:

      C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\crt\src
      

      part2:C标准库,包含几代Visual Studio稳定的代码,如函数fopen,也包含稳定的CRT函数如_initterm,代码在这里:

      C:\Program Files (x86)\Windows Kits\10\Source\10.0.17763.0\ucrt
      

      即此部分已移至 Windows SDK,随 Windows 而不是 Visual Studio 分发。

      参考:

      https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/

      【讨论】:

        【解决方案7】:

        【讨论】:

          【解决方案8】:

          自 2019 年 9 月 16 日起,Microsoft MSVC's STL 可在 GitHub 上找到。

          【讨论】:

            【解决方案9】:

            不要忘记STLPortSGI

            【讨论】:

              【解决方案10】:

              在 Visual Studio 中,如果您对具体(特定)STL 元素实现(例如,任何函数)感兴趣,请右键单击代码中提及的内容,然后在上下文菜单中选择“转到定义”。 (或将光标放在此提及并按“F12”)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-24
                • 1970-01-01
                • 1970-01-01
                • 2023-03-19
                • 2012-02-18
                相关资源
                最近更新 更多