C标准、C标准库、C++标准、C++标准库

1、C标准

C标准主要有三个版本:C89、C99、C11,他们之间的关系可以借用这张图来表示:

C 标准主要由两部分组成:描述C的语法,和描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义。要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算符合C标准。不符合C标准的实现也是存在的,例如很多单片机的C 语言开发工具中只有C编译器而没有完整的C标准库。

2、C标准库

2.1 GNU/Linux版本的实现

glibc是Linux上使用最广泛的C标准库的实现。

glibc库不但包含标准C库的所有头文件,还包含了所有POSIX库的头文件。

在Linux系统里,libc.so.6就是glibc。

2.2 其他版本的实现

iOS版本的C标准库实现:是libSystem的一部分,libSystem是位于/usr/lib/libSystem.dylib中的核心库。LibSystem包含其他组件,如数学库、线程库和其他底层实用程序。

Windows版的C标准库实现:2015之前是CRTDLL.DLL库,2015之后是UCRTBASE.DLL。

Android的C标准库实现:bionic。

3、C++标准

C++的标准总结如下:

时间 名称 标准制定组织 事件
1998 C++ 98 标准 ISO & IEC

1998年C++标准得到ISO和ANSI批准。

以后每5年视实际需要更新一次。

2003 C++ 03 标准 ISO & IEC 2003年通过了C++标准第二版。
2011 C++ 11 标准 ISO & IEC

2011年发布了C++标准第四版C++ 11,取代现行的C++ 98 和 C++ 03。

此次标准为 C++ 98发布13年来第一次重大修正。

2014 C++ 14 标准 ISO & IEC

2014年发布了C++标准第四版C++ 14,

是 C++ 11的增量更新。

4 、C++标准库

4.1 GNU/Linux版本的实现

libstdc++是Linux上的C++标准库的实现。

4.2 其他版本的实现

iOS实现:Mac中,Mac OS < V10.9, libstdc++是默认选项;Mac OS >= V10.9,使用 libc++

               (注1:这是LLVM项目所引人的 GNU libstdc++ 的替代;

                  注2:LLVM是Mac官方编译器框架)

                 iOS可以使用 iOS SDK来访问标准库;

Windows版实现:

                 在Windows上,标准库的实现一直严格限定在 Visual Studio中,它是微软官方编译器。他们通常称之为C/C++运行时库(CRT),并且它涵盖了C/C++二者的实现。名为 CRTDLL.DLL。

                 从 Windows 95开始,Microsoft开始将其迁移到MSVCRT[版本号].DLL之上。例:MSVCR71.DLL

                 在1997年左右,他们决定将文件名简化为MSVCRT.DLL,这导致了DLL混乱。因此从 Visual Studio 7.0开始,他们切换回每个版本使用单独的DLL了。

                 Visual Studio 2015引入了深度 CRT 重构。C/C++ 标准库的实现迁移到一个新库, Universal C运行时库(Universal CRT 或 UCRT),编译为 UCRTBASE.DLL。

 Android版实现:

libc++。从 Lollipop 开始的官方安卓系统和现代 Mac OS 都将其作为 C++ 标准库使用。从NDK v17开始,它将成为NDK中唯一可用的 C++ 标准库实现。

gnustl。libstdc++的别名,这两者在GNU/Linux中同一个库。该库已被弃用,它将在NDK v18中删除。

STLport。由STLport项目编写的C++标准库的第三方实现,自2008年开始一直处于不活跃状态。与gnustl一样,STLport将在NDK v18种移除。

5、参考

https://www.crifan.com/summary_c_language_version_c89_amd1_c99_c11/

https://www.cnblogs.com/nmj1986/p/10626754.html

Guess you like

Origin blog.csdn.net/sjwangjinbao/article/details/118657631