如何在C ++中查看头文件的源代码?

时间:2010-01-31 05:16:33

标签: c++

类似于iostream.h,conio.h,...

4 个答案:

答案 0 :(得分:6)

标准库通常是所有模板。您可以打开所需的标题,看看它是如何实现的。请注意,它不是<iostream.h>,而是<iostream>; C ++标准库没有.h扩展名。像<string.h>这样的C库可以包含在<cstring>中(尽管通常只包含string.h

也就是说,编译了运行时库(像C库这样的东西,非模板东西)。您可以搜索编译器安装目录以查找运行时库的源代码。

为什么呢?如果只是为了看,你去。但这是一种尝试学习的可怕方式,因为代码可能具有特定于编译器的非标准扩展,并且大多数实现通常都难以阅读。

如果您对某个功能的内部工作有特定的问题,请随时开始一个新问题,并询问它是如何工作的。

<子> †我应该提一下,如果有机会,你可能会有一个支持export的编译器。这意味着他们完全有可能编译模板化的代码;但这是极不可能的。应该提到完整性。

答案 1 :(得分:2)

从你添加的评论中,看起来你正在寻找不是模板的函数实现的源(或者出于任何原因不在头文件中)。更传统的运行时库支持通常是单独编译的,并且是在链接到您的程序的库文件中。

大多数编译器都提供了库的源代码(尽管不保证可用),但源文件可能安装在系统的任何位置。

对于我安装的Microsoft编译器,我可以在Visual Studio安装位置下的目录中找到运行时的源代码,其名称如下:

vc\crt\src        // VS2008
vc7\crt\src       // VS2003
vc98\crt\src      // VC6

如果您正在使用其他编译器,请浏览安装目录(并确保在安装编译器工具时已要求安装运行时源)。

答案 2 :(得分:1)

如上所述,它是特定于实现的,但有一种查看头文件内容的简便方法。

  • 只需为gccg++ -E启用预处理即可编译代码。 这会根据实际内容替换头文件的内容,您可以看到它们。

  • 在linux上,您可以在/usr/include

  • 中找到其中一些内容
  • 这些文件只包含声明和宏定义。实际的实现源文件可以从库提供程序获得,例如标准C ++库(libstdc ++)的源代码可以获得here

答案 3 :(得分:0)

根据C ++语言规范,实现者不必将标准头文件放入物理文件中。允许实现者在转换器的可执行文件中对头部进行硬编码。

因此,您可能无法查看标准头文件的内容。