当前位置: 首页 > news >正文

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++的标准总结如下:

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

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

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

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

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

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

2014C++ 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

http://www.xdnf.cn/news/813709.html

相关文章:

  • 10个用于Android开发的有用的Kotlin库及示例
  • SMTP、ESMTP、POP3发送接收邮件
  • 启动应用程序出现mfc71u.dll找不到问题解决
  • PropertyGrid 用法,还没明白呢.
  • linux_i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
  • 【数学建模】基于matlab模拟报童问题仿真
  • uefi和legacy的区别对比
  • C#中当程序的访问权限不足时,Directory.Exists和File.Exists方法不会抛出异常报错...
  • Windows server 2012R2下IIS服务器的配置与管理
  • 局域网电脑入侵
  • Linux---Shell(使用技巧 与 变量)
  • 事件对象
  • 使用SWFUpload上传文件
  • 【实用工具系列】MathCAD入门安装及快速上手使用教程
  • 如何使用五笔输入法
  • ScaleAnimation开始结束位置分析
  • Ajax:万字总结黑马笔记,学懂Ajax看这一篇就够了
  • jQuery的基本使用
  • Eclipse Android开发环境搭建
  • 域渗透—域用户枚举与口令爆破
  • 6个月Python学习计划 Day 13 - 文件操作基础
  • 如何获取显卡的GPU占用率和显存占用情况
  • 新手小白零基础,该怎样学习编程呢?零基础入门到精通,收藏这一篇就够了
  • 搜索引擎的工作原理
  • 什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?
  • 【python】深度学习中一个保证训练测试样本数据均衡性的重要函数:StratifiedShuffleSplit
  • 网刻工具大全:四款软件优缺评析(转)
  • 漂亮的个人主页HTML源码
  • mkdirs与createNewFile区别,Java复制文件工具类
  • 素数环