c++标准库是由编译器实现的么?可以看到源码吗?该如何处理
c++标准库是由编译器实现的么?可以看到源码吗?
c++标准库是由编译器实现的么?
虽然接口都符合c++标准,但是各个编译器的内部实现可能不一样是吧?
可以看到源码吗?
如果看不到源码,那么标准库是以什么文件形式存在的呢? 目标文件、lib、dll?
在哪个目录下可以找到这些文件呢?
------解决思路----------------------
是的,各种编译器有可能有不同实现
源码不一定能看到,像vc中的只有头文件可以看
gcc的中的实现可以看,libstdc++,源码网上可以下载得到。
也有一些是第三方实现的比如stlport是一种stl实现,也有源码。
------解决思路----------------------
编译器都自带了实现的。直接查看编译器自带的实现。
比较有名的有几个
gcc 自带的比较牛逼。
C&C++ 只是一个规范,没有规定具体的实现,实现都是编译器自行决定的。
最新的标准化
C11(2011)
C++14(C++ 2014)
都是 ISO 国际标准。
------解决思路----------------------
C:\Program Files\Microsoft Visual Studio\VC98\Include>dir /a-d *. /w
驱动器 C 中的卷是 C_HD5_1
卷的序列号是 1817-D526
C:\Program Files\Microsoft Visual Studio\VC98\Include 的目录
algorithm BITSET CASSERT CCTYPE CERRNO XTREE CFLOAT CISO646 CLIMITS
CLOCALE CMATH COMPLEX CSETJMP CSIGNAL CSTDARG CSTDDEF CSTDIO CSTDLIB
CSTRING CTIME CWCHAR CWCTYPE DEQUE exception FSTREAM functional IOMANIP
IOS IOSFWD IOSTREAM ISTREAM ITERATOR LIMITS LIST LOCALE MAP
MEMORY NEW NUMERIC OSTREAM QUEUE SET SSTREAM STACK stdexcept
streambuf STRING strstream TYPEINFO UTILITY VALARRAY VECTOR XSTRING XCOMPLEX
XIOSBASE XLOCALE XLOCINFO XLOCMON XLOCNUM XLOCTIME XMEMORY XSTDDEF XUTILITY
CERTSRV VERFILE
65 个文件 524,650 字节
0 个目录 14,284,091,392 可用字节
------解决思路----------------------
1.一门语言规定了你需要提供的标准接口和实现的功能,并未强行要求你的实现方式,如果规定了那编译器就大可不必存在那么多的版本了。
2.系统究竟提不提供取决于他想不想开源。单纯对Windows下的系统库的实现来说,绝大多是只是提供的头文件+lib+dll的方式让你使用,还有如ocx等组件。很多时候我们只需要包含头文件,是因为那些常用的库编译器已经帮你解决了库的引入。
3.Windows操作系统还是提供了部分源代码,比如MFC的很多实现
c++标准库是由编译器实现的么?
虽然接口都符合c++标准,但是各个编译器的内部实现可能不一样是吧?
可以看到源码吗?
如果看不到源码,那么标准库是以什么文件形式存在的呢? 目标文件、lib、dll?
在哪个目录下可以找到这些文件呢?
------解决思路----------------------
是的,各种编译器有可能有不同实现
源码不一定能看到,像vc中的只有头文件可以看
gcc的中的实现可以看,libstdc++,源码网上可以下载得到。
也有一些是第三方实现的比如stlport是一种stl实现,也有源码。
------解决思路----------------------
编译器都自带了实现的。直接查看编译器自带的实现。
比较有名的有几个
gcc 自带的比较牛逼。
C&C++ 只是一个规范,没有规定具体的实现,实现都是编译器自行决定的。
最新的标准化
C11(2011)
C++14(C++ 2014)
都是 ISO 国际标准。
------解决思路----------------------
C:\Program Files\Microsoft Visual Studio\VC98\Include>dir /a-d *. /w
驱动器 C 中的卷是 C_HD5_1
卷的序列号是 1817-D526
C:\Program Files\Microsoft Visual Studio\VC98\Include 的目录
algorithm BITSET CASSERT CCTYPE CERRNO XTREE CFLOAT CISO646 CLIMITS
CLOCALE CMATH COMPLEX CSETJMP CSIGNAL CSTDARG CSTDDEF CSTDIO CSTDLIB
CSTRING CTIME CWCHAR CWCTYPE DEQUE exception FSTREAM functional IOMANIP
IOS IOSFWD IOSTREAM ISTREAM ITERATOR LIMITS LIST LOCALE MAP
MEMORY NEW NUMERIC OSTREAM QUEUE SET SSTREAM STACK stdexcept
streambuf STRING strstream TYPEINFO UTILITY VALARRAY VECTOR XSTRING XCOMPLEX
XIOSBASE XLOCALE XLOCINFO XLOCMON XLOCNUM XLOCTIME XMEMORY XSTDDEF XUTILITY
CERTSRV VERFILE
65 个文件 524,650 字节
0 个目录 14,284,091,392 可用字节
------解决思路----------------------
1.一门语言规定了你需要提供的标准接口和实现的功能,并未强行要求你的实现方式,如果规定了那编译器就大可不必存在那么多的版本了。
2.系统究竟提不提供取决于他想不想开源。单纯对Windows下的系统库的实现来说,绝大多是只是提供的头文件+lib+dll的方式让你使用,还有如ocx等组件。很多时候我们只需要包含头文件,是因为那些常用的库编译器已经帮你解决了库的引入。
3.Windows操作系统还是提供了部分源代码,比如MFC的很多实现