ISO/IEC 9899:2011 条款6.4.1——关键字

6.4.1 关键字

语法

1、以下为关键字

auto    break    case    char    const    continue    default    do    double    else    enum    extern    float    for    goto

if    inline    int    long    register    restrict    return    short    signed    sizeof    static    struct    switch    typedef    union

unsigned    void    volatile    while    _Alignas    _Alignof    _Atomic    _Bool     _Complex    _Generic    _Imaginary    _Noreturn

_Pragma    _Static_assert    _Thread_local

[译者注:以下为GCC 5.0与LLVM Clang 3.6版本中的关键字:

typeof    _Accum(部分编译器支持)    _Decimal32(仅GCC支持)    _Decimal64(仅GCC支持)    _Decimal128(仅GCC支持)    _Fract(部分编译器支持)

_Sat(部分编译器支持)    __alignof__    __asm__    __attribute__    __block(仅Clang支持)    __complex__    __extension__

__float80__(部分编译器支持)    __float128__(部分编译器支持)

__fp16    __imag__    __inline__    __int128    __label__    __real__    __restrict__    __thread

]

语义

2、上述标记(大小写敏感)被保留(在翻译阶段7和8中)用作为关键字,并且不应该用作其它用途。关键字_Imaginary被保留用于指定虚数类型。[注:用于虚数类型的一个可能规格说明出现在附录G中。]

时间: 2024-10-24 13:27:30

ISO/IEC 9899:2011 条款6.4.1——关键字的相关文章

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

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(`)之外,也不应该

ISO/IEC 9899:2011 条款6.5.1——基本表达式

6.5.1 基本表达式 语法 1.primary-expression: identifier constant string-literal (    expression    ) generic-selection 语义 2.一个标识符是一个基本表达式,提供为,它作为指派一个对象(在这种情况下,它是一个左值)或一个函数(在这种情况下,它是一个函数指派符)而被声明.[注:从而,一个未声明的标识符是对此语法的违反.][译者注:比如: int a = 10; a; // 这是一个基本表达式 ]

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

5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出,以及一组零个或多个区域特定的成员(这些不是基本字符集的成员),称为扩展字符.这些成员结合起来也被称为扩展字符集.执行字符集的成员的值是由实现定义的.

ISO/IEC 9899:2011 条款6——语言

6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中列出可替换的定义,除了当用单词“之一”开头时.一个可选的符号用下标“opt”来指示,这样 { expressionopt } 指示一个在大括号中包裹的可选的表达式. 2.当在文本中引用了语义类别时,它们不用斜体标明并且单词用空格而不是连接号(-)来分隔. 3.在附录A中给出了语言语法的概述. 6.2

ISO/IEC 9899:2011 条款5——5.2.4 环境限制

5.2.4 环境限制 1.翻译与执行环境都约束了语言翻译器和库的实现.下面概述了对一个顺应标准实现的语言相关的环境限制:库相关的限制在条款7中讨论. 5.2.4.1 翻译限制 1.实现应该能够翻译并执行至少一个程序,该程序包含以下每个限制的至少一个实例:[注:实现应该尽量避免强加使用固定的翻译限制.] —— 127个语句块的嵌套层级 —— 63个带条件的包含嵌套层级 —— 12个指针.数组与函数声明符(以任意结合)在一个声明中用于修饰一个算术.结构体.联合体或void类型. —— 63个圆括号包

ISO/IEC 9899:2011 条款6.5——表达式

6.5 表达式 1.一个表达式是操作符与操作数的一个序列,这些操作符与操作数指定了一个值的计算,或指派一个对象或一个函数,或是生成副作用,或执行上述操作的组合.对一个操作符的操作数的值计算顺序排在对该操作符的结果的值计算之前.[译者注:比如 int a = (100 + 5) * (20 - 6); 对于上述表达式,就对于当中的 * 操作符而言,先计算乘法操作符左右两边的操作数的计算,最后再计算乘法操作结果. ] 2.如果在一个标量对象上的副作用相对于同一标量对象上的另一个不同副作用或是使用同一

ISO/IEC 9899:2011 条款6.7.1——存储类说明符

6.7.1 存储类说明符 语法 1.storage-class-specifier: typedef extern static _Thread_local auto register 约束 2.在一个声明中,在声明说明符中最多只能给出一个存储类说明符,除了_Thread_local可以与static或extern一起出现.[注:见“未来语言方向”(6.11.5)] 3.在含有语句块作用域的一个对象的声明中,如果声明说明符包含了_Thread_local,那么它们应该也包含static或是ext

ISO/IEC 9899:2011 条款6.2.3——标识符的名字空间

6.2.3 标识符的名字空间 1.如果一个特定标识符的多个声明在一个翻译单元的任意一点可见,那么语法上下文会区分对不同实体的引用.从而,对于标识符各种不同的类别具有独立的名字空间: ——标签名(通过标签声明和使用的语法进行区分): ——结构体.联合体以及枚举的类型名(通过关键字struct.union或enum进行区分): ——结构体或联合体的成员:每个结构体或联合体为其成员具有一个独立的名字空间(通过用于访问成员的.或是->操作符的表达式类型进行区分): ——所有其它标识符称为普通标识符(声明

ISO/IEC 9899:2011 条款4——顺应

4. 顺应 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为是未定义的.否则,未定义行为在本国际标准中通过“未定义行为”这一短语或通过对任一显式定义的行为的缺省进行指定.在这三种表达方式之中没有特别的重点强调:它们都描述了“未定义的行为”. 3.在所有其它方面都正确的一个程序且操作正确的数据,却含有未指定的行为,那么应该是一个正确的程序并且其行为符号5.1.2.