zoukankan      html  css  js  c++  java
  • C/C++标准有哪些?

                        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++标准
  • 相关阅读:
    pycharm如何快速替换代码中的字符
    tcp三次握手四次挥手那些事
    Python之异常处理
    Python之单例模式
    ApplicationContext
    ContextLoaderListener作用详解
    DispatcherServlet--Spring的前置控制器作用简介
    web.xml中servlet的配置
    Hibernate各种主键生成策略与配置详解【附1--<generator class="foreign">】
    java.util.ConcurrentModificationException 解决办法(转)
  • 原文地址:https://www.cnblogs.com/nmj1986/p/10626754.html
Copyright © 2011-2022 走看看