1. C
时间 名称 标准制定组织 事件
1978 K&R标准 K&R
《The C Programming Language》
 
author: K&R
1989 ANSI C / C89 ANSI ANSI通过C语言标准
1990 C90 ISO & IEC ISO&IEC将C89标准定为C语言国际标准
1994 C94 ISO & IEC ISO&IEC发布C89标准修订版,即C94
1995 C95 ISO & IEC ISO&IEC发布C94标准修订版,即C95
1999 C99 ISO & IEC ISO&IEC发布C语言新标准,即C99。这是C语言第二个标准
2011 C11 ISO & IEC ISO&IEC发布C语言新标准,即C11。这是C语言第三个标准
                     
        C标准库 实现
                        1). GNU/Linux版实现:glibc.so(注:Linux中被重命名为libc.so。原因:所有Linux库都必须以lib前缀打头)
                        2). Mac和iOS实现:
                                        Mac中,C标准库的实现是libSystem(/usr/lib/libSystem.dylib)的一部分;
                                        iOS可以使用 iOS SDK来访问标准库;
                        3). 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。
                        4). Android版实现:
                                        Bionic是Google为其Android操作系统所编写的C标准库实现,它直接在底层使用。第三方开发者可以通过Android NDK访问 Bionic,Android NDK允许开发者使用 C/C++代码编写Android应用程序。
 
 
                      2. 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的增量更新。

                     
        C++标准库 实现
                        1). GNU/Linux版实现:libstdc++
                        2). Mac和iOS实现:
                                        Mac中,Mac OS < V10.9, libstdc++是默认选项;Mac OS >= V10.9,使用 libc++(注1:这是LLVM项目所引人的 GNU libstdc++ 的替代;注2:LLVM是Mac官方编译器框架)
                                        iOS可以使用 iOS SDK来访问标准库;
                        3). 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。
                        4). Android版实现:
                                        对C++标准库,Android NDK提供了很多版本的实现:
                                            libc++。从 Lollipop 开始的官方安卓系统和现代 Mac OS 都将其作为 C++ 标准库使用。从NDK v17开始,它将成为NDK中唯一可用的 C++ 标准库实现。
                                            gnustl。libstdc++的别名,这两者在GNU/Linux中同一个库。该库已被弃用,它将在NDK v18中删除。
                                            STLport。由STLport项目编写的C++标准库的第三方实现,自2008年开始一直处于不活跃状态。与gnustl一样,STLport将在NDK v18种移除。
 
 
补充重点:C++与C的不兼容
            1. 最常见的差异之一是,C 允许从 void * 隐式转换到其他指针类型,但C++不允许。
            2. 另一个常见的可移植问题是,C++重新定义了关键字,如 new, class,它们在C程序中可以作为识别字(例:变量名)的。
            3. 在C标准(C99)中去除了一些不兼容之处,也支持了一些C++的特性,如注解,以及在代码中混合声明。不过C99也纳入了几个和C++冲突的特性(如:可变长度数组、原生复数类型和复合逐字常数)。
 
            若要混用C和C++的代码,则所有在C++中调用的C代码,必须放在 extern “C”{/*C代码*/}内。
 
参考资料:
            C标准和C++标准

C/C++标准有哪些?的更多相关文章

  1. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  2. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  3. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  4. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  5. Python标准库--typing

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...

  6. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  7. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  8. C++标准库实现WAV文件读写

    在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...

  9. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  10. 「标准」的 JS风格

    首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...

随机推荐

  1. Docker for Windows 启动失败,提示Kubernetes证书无效

    起因 部署服务器到一台很久未更新的系统(windows 10),安装docker后,恰好系统自动更新,重启后docker不能启动,提示Kubernetes证书无效(未截到图,抱歉) 排查 因为没有开启 ...

  2. Python pip离线部署

    因为生产环境不能联网,必须使用离线部署pip包,倒也不用部署Pypi镜像那么大工作量,其实蛮简单的,贴出了备忘 pip download -r requirements.txt -d packages ...

  3. maven 根据profile,resources,filters来区分部署环境

    项目过程中,在不同的阶段,分别需要部署开发环境,测试环境,线上环境.如果都用一套配置文件,很容易弄乱,所以维持多套配置文件很有必要. maven提供了一组属性以供开发人员灵活搭配,可以根据环境来打包, ...

  4. 安装win7 64位和win10 64位双系统小结

    1.gpt比mbr更先进.与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区(mbr只支持4个分区),支持高达 18 千兆兆字节的卷大小,允许将主 ...

  5. elixir二进制模式匹配

    for << << b1::size(2), b2::size(3), b3::size(3) >> <- "hello" >> ...

  6. python2和python3中列表推导式的变量泄露问题

    Python 2.x 中,在列表推导中 for 关键词之后的赋值操作可能会影响列表推导上下文中的同名变量.像下面这个 Python 2.7 控制台对话: Python 2.7.15 (default, ...

  7. AngularJS 的常用特性(三)

    6.表达式  在模板中使用表达式是为了以充分的灵活性在模板.业务逻辑和数据之间建立联系,同时又能避免让业务逻辑渗透到模板中. <div ng-controller="SomeContr ...

  8. Lucio: We avoided Mourinho after every loss

    Former Inter defender Lucio has revealed how players had to avoid former Nerazzurri coach Mourinho e ...

  9. unity TileMap 简述

    主要工具 说明 更多说明 Sprite 精灵,纹理的容器. 大型纹理图集可以转为精灵图集(Sprite Sheet). Tile 瓦片,包含一个精灵,以及两个属性,颜色和碰撞体类型.   Tilema ...

  10. Knockout.js Text绑定

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...