类似于iostream.h,conio.h,...
答案 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)
如上所述,它是特定于实现的,但有一种查看头文件内容的简便方法。
只需为gcc
和g++
-E
启用预处理即可编译代码。
这会根据实际内容替换头文件的内容,您可以看到它们。
在linux上,您可以在/usr/include
这些文件只包含声明和宏定义。实际的实现源文件可以从库提供程序获得,例如标准C ++库(libstdc ++)的源代码可以获得here。
答案 3 :(得分:0)
根据C ++语言规范,实现者不必将标准头文件放入物理文件中。允许实现者在转换器的可执行文件中对头部进行硬编码。
因此,您可能无法查看标准头文件的内容。