zoukankan      html  css  js  c++  java
  • ISO/IEC 9899:2011 前言

    前言


    1、ISO(国际标准组织)与IEC(国际电工技术委员会)为全世界标准形成了专门的系统。作为ISO或IEC成员的国家机构,通过由各自组织所建立的技术委员会来加入国际标准的开发,以处理特定领域的技术活动。ISO与IEC技术委员会在共同关注的领域相互协作。其它与ISO和IEC相互联络的国际组织、政府和非政府也参加此工作。


    3、在信息技术领域,ISO与IEC已经建立了联合技术委员会——ISO/IEC JTC 1。由联合技术委员会所采纳的国际标准草案传递给国家机构用于投票。作为一个国际标准的发布要求至少75%的国家机构的投票赞成。


    4、要注意,本文档的某些元素可能含有专利权的主题。ISO与IEC不会对标识任一或所有这种专利权而持有责任。


    5、本国际标准是由联合技术委员会ISO/IEC JTC 1、信息技术、子委员会 SC22、编程语言其环境以及系统软件接口准备的。对此标准负责的工作组(WG14)维护了一个万维网站,在:http://www.open-std.org/JTC1/SC22/WG14/,包含了与此标准相关的额外信息,诸如在此准备期间所做出的许多决定的理由依据,以及含有缺陷的报告和回应的一份日志。

     
    6、第三版取消并替换了第二版ISO/IEC 9899:1999,用ISO/IEC 9899:1999/Cor 1:2001、ISO/IEC 9899:1999/Cor 2:2004,以及ISO/IEC 9899:1999/Cor 3:2007作为修订版本。与先前版本相比的主要变化有:

    ——带条件(可选的)特征(包括某些之前强制性标准)

    ——对多线程执行的支持,包括一个提升存储器顺序模型、原子对象和thread-local存储(<stdatomic.h>)与(<threads.h>

    ——新增浮点特性宏(<float.h>

    ——查询与指定对象对齐(<stdalign.h><stdlib.h>

    ——Unicode字符与字符串(<uchar.h>)(最初在ISO/IEC TR 19769:2004中指定)

    ——泛型类型表达式

    ——静态断言

    ——匿名结构体与联合体

    ——无返回函数

    ——用于创建复数的宏(<complex.h>

    ——对通过互斥访问来打开文件的支持

    ——移除了gets函数(<stdio.h>

    ——添加了aligned_alloc、at_quick_exit以及quick_exit函数(<stdlib.h>

    ——(带条件的)对边界检查接口的支持(最初在ISO/IEC TR 24731-1:2007中指定)

    ——(带条件的)对可分析性的支持


    7、在第二个版本中主要变化包括:

    ——通过双字符符号与<iso646.h>限制了字符集的支持(最初在AMD1中指定)[译者注:这相对于原始C语言中的三字符符号来说的,比如之前部分国家用的键盘没有常用标准ASCII特殊字符,所以用三字符来代替。像#可用??=来表示;而现在引入双字符符号,可用%:来表示#]

    ——宽字符库支持,在<wchar.h><wctype.h>中(最初源于AMD1中)

    ——通过有效类型更精确的别名规则

    ——约束指针[译者注:引入的restrict关键字]

    ——可变长度的数组

    ——灵活的数组成员

    ——在行参数组声明符中的static和类型限定符[译者注

    void f(int i, int a[static i])
    // 此函数声明中,a[static i]表示a所指向的数组至少含有i个元素
    // 使得编译器能做某些额外的优化

    ——复数(以及虚数)的支持,在<complex.h>

    ——泛型类型数学宏,在<tgmath.h>

    ——long long int类型以及库函数

    ——增加了最小翻译单元限制

    ——增加了浮点特征,在<float.h>

    ——移除了隐式的int

    ——可靠的整数除法

    ——统一字符名(uU

    ——扩展的标识符

    ——十六进制浮点常量以及%a%A printf/scanf转换指示符

    ——复合字面量

    ——位置指定的(designated)初始化器

    ——// 注释

    ——<inttypes.h><stdint.h>中的扩展整数类型以及库函数

    ——移除了隐式的函数声明

    ——以intmax_t/uintmax_t所做的预处理器计算

    ——将声明与代码混合

    ——为选择与迭代语句的新的语句块作用域

    ——整数常量类型规则

    ——整数晋升(promotion)规则

    ——带有可变实参个数的宏

    ——<stdio.h><wchar.h>中的vscanf函数家族

    ——<math.h>中额外的数学库函数

    ——通过数学库函数(math_errhandling)处理错误条件

    ——<fenv.h>中访问浮点环境

    ——IEC 60559(也称为IEC 559或IEEE计算)支持

    ——允许在enum声明中最后以逗号结尾[译者注:比如:

    enum TRAFFIC_LIGHT 
    {
        TRAFFIC_LIGHT_RED,
        TRAFFIC_LIGHT_YELLOW,
        TRAFFIC_LIGHT_GREEN,    // 这里允许使用逗号,即便后续没有枚举值
    };

    ——在printf中允许使用%lf 转换指示符[译者注:表示double数据类型]

    ——内联函数

    ——<stdio.h>中的snprintf函数家族

    ——<stdbool.h>中的布尔类型

    ——幂等(idempotent)类型限定符[译者注:像const、volatile、restrict等限定符是幂等的(idempotent)。这意味着,如果这些限定符被间接使用了多次,编译器仍然将它视作为仅出现一次。比如:

    typedef const int CInt;
    static const CInt a = 10;    // 这条语句仍然合法,a仍然被视作定义为const int

    ——空的宏实参

    ——新的结构题类型兼容规则(标签兼容)

    ——额外的预定义宏名

    ——_Pragma预处理操作符

    ——标准pragma

    ——__func__预定义标示符

    ——va_copy

    ——额外的strftime转换指示符

    ——LIA[译者注:独立于语言的计算——Language Independent Arithmetic]兼容性附加条款

    ——在一个二进制文件的开头废弃使用ungetc

    ——移除了对别名数组形参的反对使用

    ——对数组到指针的类型转换不限于左值

    ——对聚合[译者注:数组与结构体的总称]与联合体初始化的松弛强制

    ——对可移植头文件名的松弛限制

    ——对于在返回一个值的函数中,不带表达式的return不被允许(反之亦然)


    8、附录D、F、G、K以及L形成了此标准的标准规范部分;附录A、B、C、E、H、I、J,目录,以及索引仅仅只是用于信息。根据ISO/IEC指令的第2部分,本前言、引言、注解、脚注以及例子也只是用于信息。

  • 相关阅读:
    Atitit.ati  str  字符串增强api
    Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#
    Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#
    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
    Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本
    Atitit.软件开发的最终的设计 dsl化,ast化(建立ast, 解析执行ast)
    Atitit.软件开发的最终的设计 dsl化,ast化(建立ast, 解析执行ast)
    swfupload 上传控件的配置
    SWFUpload下载地址
    js 转化类似这样的时间( /Date(1389060261000)/)问题
  • 原文地址:https://www.cnblogs.com/zenny-chen/p/4121994.html
Copyright © 2011-2022 走看看