我在哪里可以看到C ++标准库中使用的代码?

时间:2010-11-14 00:43:19

标签: c++ macos

当我使用#include

编译程序时

在哪里可以看到该文件的内容,并且由于该文件包含声明,我在哪里可以看到这些函数中使用的实际代码?

是对所有人开放还是公众无法使用?

7 个答案:

答案 0 :(得分:5)

实际代码位于编译器附带的特定于平台的标准库中,您可以通过查看标准库实现源来查看它。

以下是GNU libstdc++的文档(和来源)(gcc附带):http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html

从其中一个镜像下载源代码:http://gcc.gnu.org/mirrors.html

答案 1 :(得分:3)

通常#included文件是可读的,但它实现的库通常是不可读的。 mac上的include文件位于 / usr / include / c ++

库代码取决于编译器。对于在Linux和Mac中使用的Gnu C ++,你绝对可以看到代码。您可能需要下载它。它位于http://gcc.gnu.org/libstdc++/

我认为Windows C ++库代码不可用。

答案 2 :(得分:2)

这取决于您使用的工具链,并非每个供应商都将其实施公开。您可以查看GNU C库的初学者:http://www.gnu.org/software/libc/

Dinkumware,例如,在Visual Studio中使用的C ++标准模板库背后的公司正在提供商业产品,因此代码并非每个人都可用 - 它实际上取决于您的许可证。某些版本的Visual Studio确实附带了运行时的源代码。

对于STL,还有STLport,一个开源的STL实现。

你最好的选择确实是gcc / g ++所依赖的项目。

答案 3 :(得分:2)

C ++标准本身就是这样一个标准。其实施由许多供应商完成。 STLport和GNU libstdc ++都是开源的,可以作为一个整体来看待。 Visual Studio附带Dinkumware C ++标准库。它是封闭源。

尽管如此,您仍然可以通过打开C ++标准库的include目录来查看标头的来源。这些文件的命名就像包含它们一样。其中大部分都是在标题中实现的。但对于未经训练的人来说,这几乎是不可读的。

但是,当涉及到使用C ++库时,不依赖于它的确切源代码,而是依赖于C ++标准所说的内容。不要编程实现,而是编程。

答案 4 :(得分:2)

从命令行运行此命令:

find /usr -name iostream

这会告诉你你想要的目录。

答案 5 :(得分:1)

如果你使用像Visual Studio这样的东西,你可以设置一个断点,然后逐行逐步执行代码,它将随你打开包含的文件。在我看来,最快的方式进入文件。否则,您可以在PC上的某处找到代码......例如,在我的C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\ostream中,用iostream,sstream等替换ostream(注意那些文件名没有扩展名)但是如果你看一下目录你会看到很多.h和.c文件

答案 6 :(得分:1)

所有系统标头随编译器一起提供。在Linux系统上,这些通常可以在/usr/include下找到。在其他平台上,通常会在安装编译器的地方生效。

商业图书馆通常不提供源代码。在linux上,这些通常可以在源pacakges中找到。

相关问题