本系列博文将以ISO/IEC 9899最新的官方手册为准,然后再添加GCC以及Clang编译器对标准的扩展. 本系列博文将不仅仅是针对C编程语言(C Programming Language)标准的翻译,还有多处[译者注]以及译者个人所提供的示例代码加以说明. 本文版权由Zenny Chen©所有,任何未经许可的出版,带有商业目的的转载都将受到法律追究.若要转载,请务必指明出处. 目录: 摘要 前言 引言 条款1——范围 条款3——术语.定义与符号 条款4——标准顺从 条款5——环境 条款6——…
前言 1.ISO(国际标准组织)与IEC(国际电工技术委员会)为全世界标准形成了专门的系统.作为ISO或IEC成员的国家机构,通过由各自组织所建立的技术委员会来加入国际标准的开发,以处理特定领域的技术活动.ISO与IEC技术委员会在共同关注的领域相互协作.其它与ISO和IEC相互联络的国际组织.政府和非政府也参加此工作. 3.在信息技术领域,ISO与IEC已经建立了联合技术委员会——ISO/IEC JTC 1.由联合技术委员会所采纳的国际标准草案传递给国家机构用于投票.作为一个国际标准的发布要求…
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用.在本国际标准中没被定义的术语将根据ISO/IEC 2382-1进行解释.在本国际标准中没被定义的数学符号将根据ISO 31-11中进行解释. 3.1 访问 1.<运行时行为>读或修改一个对象的值 2.注1:这里,这两个行为中同时只有一个发生,要么“读”,要么“修改”被使用. 3.注2:“修改”包括…
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifier    digit identifier-nondigit: nondigit         universal-character-name other implementation-defined characters nondigit:以下字符之一 _    a到z    A到Z digi…
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出,以及一组零个或多个区域特定的成员(这些不是基本字符集的成员),称为扩展字符.这些成员结合起来也被称为扩展字符集.执行字符集的成员的值是由实现定义的. 2.在一个字符常量或字符串字面量中,执行字符集的成员应该由相应的源字符集的成员或通过由倒斜杠\后面跟一到多个字符所构成的转义序列来表示.所以比特均为…
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad: hexadecimal-digit    hexadecimal-digit    hexadecimal-digit    hexadecimal-digit 约束 2.一个通用字符名不应该指定一个字符,其短标识符比00A0要小,除了0024($),0040(@),0060(`)之外,也不应该…
5.1.1 翻译环境 5.1.1.1程序结构 1.一个C程序不需要一次全被翻译完.程序的文本被保存在本国际标准中被称作为源文件(或预处理文件)的单元里.一个源文件连同所有通过指示符#include所包含的头文件以及源文件一起被称作为一个预处理翻译单元.在预处理之后,一个预处理单元被称作为一个翻译单元.先前被翻译的翻译单元可以被独立地保存或保存在库里.一个程序的各个翻译单元通过(比如)对函数(其标识符具有外部连接)的调用.对对象(其标识符具有外部连接)的操作,或是对数据文件的操作进行通信.翻译单元…
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应该在程序启动前被初始化(设置为它们的初始值).这种初始化的方式以及时间点是未指定的.程序终止将控制返回给执行环境. 5.1.2.1 独立式环境 1.在一个独立式环境中(在此环境中下,C程序可以无需借助任何操作系统的帮助进行执行[译者注:比如通过虚拟机解释执行]),在程序启动时所调用的函数名和类型是由…
本国际标准指定了C编程语言的形式并建立了对用它所表达的程序的解释.其目的在于促进在多种计算机系统上的C语言程序的可移植性.可靠性.可维护性以及高效的执行. 为了详细地说明C语言本身以及C语言执行库,包含了相关条款.附录同时概括了这两个方面,并且枚举了影响C程序可移植性的因素. 尽管本国际标准目的在于指引有相关领域知识的C语言程序员以及对C语言翻译系统的实现者,不过本文档自身并不服务于一本辅导教科书.…
引言 1.伴随着新的设备以及扩展字符集的引入,可能会将新的特性添加到此国际标准中.在此语言和库条款中的子条款提醒了实现者与程序员可能会与将来所新增特性产生冲突的用法,尽管它们现在本身是合法有效的. 2.某些特性是被逐步废弃的,这意味着这些特性可能在未来修订版本中考虑从本国际标准中撤下.它们现在被保留是因为还在被广泛使用着,但是但是在新实现(对于实现特性)中或新程序(对于语言[6.11]或库特性[7.31])中对它们的使用是不鼓励的. 3.本国际标准被分为四个主要子部分: ——初步基础原理(条款1…