6.7.8 类型定义 语法 1.typedef-name: identifier 约束 2.一个typedef名指定了一个可变修改的类型,然后它应该具有语句块作用域. 语义 3.在一个声明中,该声明的存储类说明符是typedef,每个声明符定义了一个要作为typedef名的标识符,表示了该标识符所指定的类型,如6.7.6中所描述的.任一与可变长数组声明符相关联的数组大小表达式,在每次以执行次序碰到typedef名的声明时都被计算一次.一个typedef声明并不引入一个新的类型,仅仅是所指定类型的…
6.7.3 类型限定符 语法 1.type-qualifier: const restrict volatile _Atomic 约束 2.除了指针类型(其被引用的类型是一个对象类型)之外的类型,不应该被restrict限定. 3.被_Atomic修饰的类型不应该是一个数组类型或一个函数类型. 语义 4.与限定类型相关联的属性仅对作为左值的表达式有意义.[注:实现可以将一个非volatile的一个const对象放置到一个只读存储区域.此外,实现不需要为这么一个对象分配存储空间,如果其地址永远不被…
6.9.1 函数定义 语法 1.function-definition: declaration-specifiers    declarator    declaration-listopt    compound-statement declaration-list: declaration declaration-list    declaration 约束 2.在一个函数定义中所声明的标识符(它是函数名)应该是一个函数类型,它通过函数定义的声明符部分指定.[注:这样的目的是在一个函数定义…
6.7.7 类型名 语法 1.type-name: specifier-qualifier-list    abstract-declaratoropt abstract-declarator: pointer pointeropt    direct-abstract-declarator direct-abstract-declarator: (    abstract-declarator    ) direct-abstract-declaratoropt    [    type-qu…
6.7.2 类型说明符 语法 1.type-specifier: void char short int long float double signed unsigned _Bool _Complex atomic_type-specifier struct-or-union-specifier enum-specifier typedef-name 约束 2.在每个声明中的声明说明符中,以及在每个结构体声明与类型名中的specifier-qualifier列表中的声明说明符中应该至少给出一个…
6.2.5 类型 1.存储在一个对象中的值或由一个函数所返回的值的意义由用于访问该对象的表达式的类型来确定.(声明为一个对象的一个标识符是最简单的这种表达式:其类型在标识符的声明中指定.)类型被划分为对象类型(描述对象的类型)以及函数类型(描述函数的类型).在一个翻译单元中的各个点上,一个对象类型可以是不完全的(缺乏足够信息来确定那个类型对象的大小)或完全的(具有充足的信息).[注:贯穿一整个翻译单元,一个类型可以是不完整的也可以是完整的,或者它可以在一个翻译单元的内的不同点来改变状态.] 2.…
6.2.6 类型的表示 6.2.6.1 通用类型 1.所有类型的表示都是未指定的,除了在本小节所描述的之外. 2.除了位域(bit-field),对象由连续的一个或多个字节序列构成,这些字节序列的字节个数.次序以及编码方式要么被显式指定,要么由实现定义. 3.存储在无符号位域中以及unsigned char类型中的值应该使用一个纯粹的二进制表示法来表示.[注:使用二进制数字0和1的整数的一个按位表示] 4.任一其它对象类型的非位域对象中所存储的值由n * CHAR_BIT位组成,这里n是那个类型…
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用.在本国际标准中没被定义的术语将根据ISO/IEC 2382-1进行解释.在本国际标准中没被定义的数学符号将根据ISO 31-11中进行解释. 3.1 访问 1.<运行时行为>读或修改一个对象的值 2.注1:这里,这两个行为中同时只有一个发生,要么“读”,要么“修改”被使用. 3.注2:“修改”包括…
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出,以及一组零个或多个区域特定的成员(这些不是基本字符集的成员),称为扩展字符.这些成员结合起来也被称为扩展字符集.执行字符集的成员的值是由实现定义的. 2.在一个字符常量或字符串字面量中,执行字符集的成员应该由相应的源字符集的成员或通过由倒斜杠\后面跟一到多个字符所构成的转义序列来表示.所以比特均为…
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应该在程序启动前被初始化(设置为它们的初始值).这种初始化的方式以及时间点是未指定的.程序终止将控制返回给执行环境. 5.1.2.1 独立式环境 1.在一个独立式环境中(在此环境中下,C程序可以无需借助任何操作系统的帮助进行执行[译者注:比如通过虚拟机解释执行]),在程序启动时所调用的函数名和类型是由…