C/C++标准与C/C++库标准

2023/11/26 C C++ 共 1282 字,约 4 分钟

C

C标准

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

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

C标准库

GNU/Linux版本的实现

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

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

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

其他版本的实现

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

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

Android的C标准库实现:bionic。

C++

C++标准

C++的标准由ISO & IEC制定,版本总结如下:

时间名称事件
1998C++ 98 标准1998年C++标准得到ISO和ANSI批准。以后每5年视实际需要更新一次。
2003C++ 03 标准2003年通过了C++标准第二版。
2011C++ 11 标准2011年发布了C++标准第四版C++ 11,取代现行的C++ 98 和 C++ 03。此次标准为 C++ 98发布13年来第一次重大修正。
2014C++ 14 标准2014年发布了C++标准第四版C++ 14,是 C++ 11的增量更新。

C++标准库

GNU/Linux版本的实现

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

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。

参考书籍

下载 PDF.

文档信息

Search

    Table of Contents