前言

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

——可靠的整数除法

——统一字符名(\u\U

——扩展的标识符

——十六进制浮点常量以及%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 = ; // 这条语句仍然合法,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部分,本前言、引言、注解、脚注以及例子也只是用于信息。

ISO/IEC 9899:2011 前言的更多相关文章

  1. ISO/IEC 9899:2011 条款3——术语、定义与符号

    3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...

  2. ISO/IEC 9899:2011 条款5——5.2.1 字符集

    5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...

  3. ISO/IEC 9899:2011 条款6.4.2——标识符

    6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifie ...

  4. ISO/IEC 9899:2011 条款6.4.3——通用字符名

    6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...

  5. ISO/IEC 9899:2011 条款6.5.16——赋值操作符

    6.5.16 赋值操作符 语法 1.assignment-expression: conditional-expression unary-expression    assignment-opera ...

  6. ISO/IEC 9899:2011 条款5——5.1.2 执行环境

    5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...

  7. ISO/IEC 9899:2011 摘要

    本国际标准指定了C编程语言的形式并建立了对用它所表达的程序的解释.其目的在于促进在多种计算机系统上的C语言程序的可移植性.可靠性.可维护性以及高效的执行. 为了详细地说明C语言本身以及C语言执行库,包 ...

  8. ISO/IEC 9899:2011 引言

    引言 1.伴随着新的设备以及扩展字符集的引入,可能会将新的特性添加到此国际标准中.在此语言和库条款中的子条款提醒了实现者与程序员可能会与将来所新增特性产生冲突的用法,尽管它们现在本身是合法有效的. 2 ...

  9. ISO/IEC 9899:2011 条款1——范围

    1. 范围 1.本国际标准指定了C编程语言的形式并建立了对用C编程语言进行编写程序的诠释.[注:国际标准的设计是用于提升在多种数据处理系统中的C程序的可移植性.其目的在于能够被实现者与程序员所使用.] ...

随机推荐

  1. PHP中的十进制、八进制、二进制、十六进制

    我们平时用的都是十进制. 比如:987这个数字,其本质就是7*10^0+8*10^1+9*10^2 个位数上的7,1就是1,十位上的8,1就是10,百位上的9,1是100 echo '<br&g ...

  2. spring cloud turbine 监控不到其它机器上的hystrix.stream 的解决方法 指定监控ip

    turbine多台机器熔断聚合的时候  turbine控制台一直寻找的是localhost下的监控熔断数据. c.n.t.monitor.instance.InstanceMonitor   : Ur ...

  3. 2019年牛客多校第二场 H题Second Large Rectangle

    题目链接 传送门 题意 求在\(n\times m\)的\(01\)子矩阵中找出面积第二大的内部全是\(1\)的子矩阵的面积大小. 思路 处理出每个位置往左连续有多少个\(1\),然后对每一列跑单调栈 ...

  4. db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码

    db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码 检测

  5. 案例实战之如何写一个webpack plugin

    案例实战之如何写一个webpack plugin 1.写一个生成打包文件目录的file.md文件 // 生成一个目录项目目录的文件夹 class FileListPlugin { constructo ...

  6. 案例实战之如何写一个webpack loader

    通过以下几个实例掌握webpack loader的写法 1.写一个多语言替换的loader 在index.js在页面上插入了一个{{title}}文本,我们需要在打包的时候将其替换成对应的多语言 fu ...

  7. Centos7 Rsync怎么实现热备份笔记

    应用场景:备份Web服务器相关目录下的数据文件,确保指定目录下的所有文件同步. 操作系统:Centos 7 服务器两台:web服务器 172.19.242.70  备份服务器 172.19.242.7 ...

  8. “Another git process seems to be running in this repository...”Git此问题解决

    Git中显示:Another git process seems to be running in this repository, e.g.an editor opened by 'git comm ...

  9. navicat 远程连接服务器1130,1045问题报错处理

    本人踩坑多次,一开始网上搜罗,解决办法大同小异,摸索了很久才全部解决完成,小小bug真磨人啊 首先,根据我的踩坑记录,navicat 1045和navicat 1130貌似属于同一种解决方案,都是修改 ...

  10. Net-NTLMv1的利用思路

    Net-NTLMv1的加密方法: 客户端向服务器发送一个请求 服务器接收到请求后,生成一个16位的Challenge,发送回客户端 客户端接收到Challenge后,使用登录用户的密码hash对Cha ...