代码之家  ›  专栏  ›  技术社区  ›  Samiey Mehdi

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

c++
  •  1
  • Samiey Mehdi  · 技术社区  · 15 年前

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

    4 回复  |  直到 13 年前
        1
  •  6
  •   GManNickG    15 年前

    标准库通常是所有模板。您只需打开所需的头并查看它是如何实现的。 阿西 . 注意它不是 <iostream.h> ,它是 <iostream> C++标准库没有 .h 扩展。C类库 <string.h> 可包含为 <cstring> (尽管通常包括 string.h )

    也就是说,运行时库(比如C库,而不是模板库)是编译的。您可以搜索编译器安装目录以查找运行时库的源代码。

    为什么?如果只是想看看,那就去吧。但是这是一种糟糕的学习方法,因为代码可能有编译器特有的非标准扩展,而且大多数实现通常都是难看的。

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

    我应该提到,您可能偶尔会有一个编译器支持 export . 这意味着它们完全有可能已经编译了模板化的代码;但这是非常不可能的。为了完整起见,应该提及。

        2
  •  2
  •   Michael Burr    15 年前

    从您添加的注释来看,您似乎在寻找非模板(或出于任何原因不在头文件中)函数实现的源代码。更传统的运行时库支持通常是单独编译的,并在链接到程序的库文件中进行。

    大多数编译器提供库的源代码(虽然不能保证它是可用的),但是源文件可能安装在系统的任何地方。

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

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

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

        3
  •  1
  •   sud03r    15 年前

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

    • 编译代码时只启用预处理 gcc g++ 它是 -E 选择权。
      这将用头文件的实际内容替换头文件的内容,您可以看到它们。

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

    • 这些文件只包含声明和宏定义。实际实现源文件可以从库提供程序获得。例如,标准C++库(LIbStDc++)的源代码是可获得的。 here .

        4
  •  0
  •   Thomas Matthews    15 年前

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

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