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
——可靠的整数除法
——统一字符名(\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 前言的更多相关文章
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- ISO/IEC 9899:2011 条款6.4.2——标识符
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier identifier-nondigit identifie ...
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- ISO/IEC 9899:2011 条款6.5.16——赋值操作符
6.5.16 赋值操作符 语法 1.assignment-expression: conditional-expression unary-expression assignment-opera ...
- ISO/IEC 9899:2011 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
- ISO/IEC 9899:2011 摘要
本国际标准指定了C编程语言的形式并建立了对用它所表达的程序的解释.其目的在于促进在多种计算机系统上的C语言程序的可移植性.可靠性.可维护性以及高效的执行. 为了详细地说明C语言本身以及C语言执行库,包 ...
- ISO/IEC 9899:2011 引言
引言 1.伴随着新的设备以及扩展字符集的引入,可能会将新的特性添加到此国际标准中.在此语言和库条款中的子条款提醒了实现者与程序员可能会与将来所新增特性产生冲突的用法,尽管它们现在本身是合法有效的. 2 ...
- ISO/IEC 9899:2011 条款1——范围
1. 范围 1.本国际标准指定了C编程语言的形式并建立了对用C编程语言进行编写程序的诠释.[注:国际标准的设计是用于提升在多种数据处理系统中的C程序的可移植性.其目的在于能够被实现者与程序员所使用.] ...
随机推荐
- 19.centos7基础学习与积累-005-命令总结01
从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.查看命令帮助的方法: --help 适用于一般命令,非内置命令 man 适用于 ...
- 【转载】linux性能监控分析及通过nmon_analyse生成分析报表
转载地址:http://www.cnblogs.com/Lam7/p/6604832.html nmon是一款分析 AIX 和 Linux 性能的免费工具 nmon 工具还可以将相同的数据捕获到一个文 ...
- SQL之CASE WHEN用法详解(转)
当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了. Case具有两种格式.简单Case函数和Case搜索函数. 第一种 格式 : 简单C ...
- solr和ElasticSearch(ES)的区别?
Solr2004年诞生 ElasticSearch 2010年诞生 ES更新 ElasticSearch简介: ElasticSearch是一个实时的分布式的搜索引擎和分析引擎.它可以帮助你用前所未有 ...
- 《The One 团队》:第九次团队作业:BETA冲刺与团队项目验收
项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报告:(3) ...
- jmeter-多用户循环执行(存储token)
1.从cvs文件中读取数据 登录接口读取文件: 2.读取token,保存token 在登录接口下添加 设置: 把token保存为全局变量: 设置: 输入${__setProperty(newtoken ...
- LG4781 【模板】拉格朗日插值 和 JLOI2016 成绩比较
[模板]拉格朗日插值 题目描述 由小学知识可知,$n$个点$(x_i,y_i)$可以唯一地确定一个多项式 现在,给定$n$个点,请你确定这个多项式,并将$k$代入求值 求出的值对$998244353$ ...
- 分享STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
编译环境:我用的是(Keil)MDK4.7.2 stm32库版本:我用的是3.5.0一.本文不对FLASH的基础知识做详细的介绍,不懂得地方请查阅有关资料. 对STM32 内部FLASH进行编程操 ...
- tensorflow API _ 4 (优化器配置)
"""Configures the optimizer used for training. Args: learning_rate: A scalar or `Tens ...
- 微信小程序底部导航栏部署
在微信小程序开发app.json(app.json它是定义全局页面) 只是用来部署微信底部的图标,最多不能大于五个 "tabBar":{ "selectedColor&q ...