2010-11-14 71 views
5

当我使用#include编写程序时我在哪里可以看到C++标准库中使用的代码?

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

是向所有人开放还是不向公众开放?

+1

标准库没有一个实现。您可以通过在您的系统上搜索标题来找出实施的标题。很可能他们都在一个地方。 – 2010-11-14 00:48:02

+1

已标记* osx * per fmunshi对doron问题发表评论。 – 2010-11-14 00:52:01

+1

好的,Mac,你使用的是什么编译器/ IDE? – pinkfloydx33 2010-11-14 01:00:27

回答

1

如果您使用类似Visual Studio的东西,您可以放置​​一个断点,然后逐行地逐行扫描您的代码,并随着您的行为打开包含的文件。在我看来最快的方式进入一个文件。否则,你可以找到你的电脑上的代码......在我的C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\ostream例如,用iostream,sstream等替换ostream(注意这些是没有扩展名的文件名),但是如果你看看你的目录看到很多.h和.c文件

1

所有系统头文件都随您的编译器提供。在Linux系统上,这些通常可在/usr/include下找到。在其他平台上,通常会安装在您安装编译器的地方。

商业图书馆通常不会发布源代码。在Linux上,这些通常可以在源代码包中找到。

+0

怎么样在mac上,我可以在哪里找到源包 – fmunshi 2010-11-14 00:51:35

2

这取决于你使用的是什么工具链,并不是每个供应商都公开他的实现。你可以看看GNU C库的初学者:http://www.gnu.org/software/libc/

Dinkumware,在Visual Studio中使用的C++标准模板库背后的例子是提供一个商业产品,因此代码不可用每个人 - 这真的取决于你的许可证。某些版本的Visual Studio确实附带了运行时的源代码。

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

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

3

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

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

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

+0

我正在使用mac,所以我在哪里可以看到代码 – fmunshi 2010-11-14 00:49:07

+0

fmunshi:回答了你关于mac的问题,改编我。 – 2010-11-14 01:06:25

2

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

不过,通过打开C++标准lib的include目录,您总是可以看到标题的来源。这些文件就像您包含它们一样命名。无论如何,它的大部分都是在头文件中实现的。但对于未经训练的眼睛来说,这几乎是无法读懂的。

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

1

运行从你的命令行命令:

find /usr -name iostream 

,将告诉你你想要的目录。

+0

非常感谢,它的工作! – fmunshi 2010-11-14 01:15:21

相关问题