当我使用#include编写程序时我在哪里可以看到C++标准库中使用的代码?
我在哪里可以看到该文件的内容,并且由于该文件包含声明,哪里可以看到这些函数中使用的实际代码?
是向所有人开放还是不向公众开放?
当我使用#include编写程序时我在哪里可以看到C++标准库中使用的代码?
我在哪里可以看到该文件的内容,并且由于该文件包含声明,哪里可以看到这些函数中使用的实际代码?
是向所有人开放还是不向公众开放?
实际代码位于编译器附带的特定于平台的标准库中,您可以通过查看标准库实现源来查看它。
以下是GNU(它附带gcc
)libstdc++
的文档(和源文件):http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html。
下载从这些反射镜中的一个源:http://gcc.gnu.org/mirrors.html
感谢那伟大的链接!它正是我所期待的。 – fmunshi 2010-11-14 01:16:50
如果您使用类似Visual Studio的东西,您可以放置一个断点,然后逐行地逐行扫描您的代码,并随着您的行为打开包含的文件。在我看来最快的方式进入一个文件。否则,你可以找到你的电脑上的代码......在我的C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\ostream
例如,用iostream,sstream等替换ostream(注意这些是没有扩展名的文件名),但是如果你看看你的目录看到很多.h和.c文件
所有系统头文件都随您的编译器提供。在Linux系统上,这些通常可在/usr/include
下找到。在其他平台上,通常会安装在您安装编译器的地方。
商业图书馆通常不会发布源代码。在Linux上,这些通常可以在源代码包中找到。
怎么样在mac上,我可以在哪里找到源包 – fmunshi 2010-11-14 00:51:35
这取决于你使用的是什么工具链,并不是每个供应商都公开他的实现。你可以看看GNU C库的初学者:http://www.gnu.org/software/libc/
Dinkumware,在Visual Studio中使用的C++标准模板库背后的例子是提供一个商业产品,因此代码不可用每个人 - 这真的取决于你的许可证。某些版本的Visual Studio确实附带了运行时的源代码。
至于STL,还有一个开源的STL实现STLport。
你最好的选择确实是gcc/g ++所依赖的项目。
#included文件通常是可读的,但它实现的库通常是不可读的。 Mac上的包含文件位于/usr/include/C++。
库代码依赖于编译器。对于在linux和Mac中使用的Gnu C++,您绝对可以看到代码。您可能需要下载它。它可在http://gcc.gnu.org/libstdc++/
我不认为Windows C++库代码可用。
我正在使用mac,所以我在哪里可以看到代码 – fmunshi 2010-11-14 00:49:07
fmunshi:回答了你关于mac的问题,改编我。 – 2010-11-14 01:06:25
C++标准本身只是这样的:一个标准。其实施由许多供应商完成。 STLport和GNU libstdC++都是开源的,可以作为一个整体来看待。 Visual Studio附带Dinkumware C++标准库。它是封闭的来源。
不过,通过打开C++标准lib的include目录,您总是可以看到标题的来源。这些文件就像您包含它们一样命名。无论如何,它的大部分都是在头文件中实现的。但对于未经训练的眼睛来说,这几乎是无法读懂的。
但是,当涉及到使用C++库不依赖于它的确切源代码,而是依赖于C++标准所说的。不要编程到实现,而是编程到标准。
标准库没有一个实现。您可以通过在您的系统上搜索标题来找出实施的标题。很可能他们都在一个地方。 – 2010-11-14 00:48:02
已标记* osx * per fmunshi对doron问题发表评论。 – 2010-11-14 00:52:01
好的,Mac,你使用的是什么编译器/ IDE? – pinkfloydx33 2010-11-14 01:00:27