6.7 声明

语法

1、declaration:

declaration-specifiers    init-declarator-listopt    ;

static_assert-declaration

declaration-specifiers:

storage-class-specifier    declaration-specifiersopt

type-specifier    declaration-specifiersopt

type-qualifier    declaration-specifiersopt

function-specifier    declaration-specifiersopt

alignment-specifier    declaration-specifiersopt

init-declarator-list:

init-declarator

init-declarator-list    ,    init-declarator

init-declarator:

declarator

declarator    =    initializer

约束

2、不是一个static_assert的一个声明应该至少声明一个声明符(而不是一个函数的形参或一个结构体或联合体的成员),一个标签[译者注:即一个结构体、联合体与枚举的标签,也就是关键字struct、union和enum],或一个枚举的成员。

3、如果一个标识符不具有连接,那么应该在同一名字空间中最多只能有一个具有同一作用域的该标识符的声明(在一个声明符或类型说明符中),除了:

——一个typedef名可以被重定义来表示与它当前所定义的相同的类型,提供那个类型并不是一个可修改的类型;

——结构体、联合体、枚举标签可以被重新声明,在6.7.2.3中指明。

4、在引用同一对象或函数的同一作用域中的所有声明应该指定相兼容的类型。

语义

5、一个声明指定了一组标识符的解释与与属性。一个标识符的定义是为那个标识符的声明,使得:

——对于一个对象,为那个对象留出存储空间;

——对于一个函数,包含了函数体;[注:函数定义具有一个不同的语法,见6.9.1中的描述。]

——对于一个枚举常量,是该标识符的(仅有的)声明;

——对于一个typedef名,是该标识符的第一个(或仅有的)声明。

6、声明说明符由一列说明符组成,指明了连接、存储周期、以及声明符所注明的实体的类型的一部分。init-declarator-list是一个用逗号分隔的声明符的序列,其中每一个可以具有额外的类型信息,或是一个初始化器,或者两者俱备。这些声明符包含了正在声明的标识符(如果含有的话)。

7、如果为一个对象的标识符不具有连接,那么对此对象的类型应该用其声明符的末尾来作为是完整的,或者通过其init-declarator的末尾来作为完整性,如果它具有一个初始化器的话;在函数形参的情况下(包括函数原型),它是被调整后的所需完整的类型(见6.7.6.3)。

6.7.1 存储类说明符

6.7.2 类型说明符

6.7.3 类型限定符

6.7.4 函数说明符

6.7.5 对齐说明符

6.7.6 声明符

6.7.7 类型名

6.7.8 类型定义

6.7.9 初始化

6.7.10 静态断言

ISO/IEC 9899:2011 条款6.7——声明的更多相关文章

  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.7.6——声明符

    6.7.6 声明符 语法 1.declarator: pointeropt    direct-declarator direct-declarator: identifier (    declar ...

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

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

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

    6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...

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

    6.5 表达式 1.一个表达式是操作符与操作数的一个序列,这些操作符与操作数指定了一个值的计算,或指派一个对象或一个函数,或是生成副作用,或执行上述操作的组合.对一个操作符的操作数的值计算顺序排在对该 ...

  9. ISO/IEC 9899:2011 条款6.8.6——跳转语句

    6.8.6 跳转语句 语法 1.jump-statement: goto    identifier    ; continue    ; break    ; return    expressio ...

随机推荐

  1. 使用 create-react-app 快速构建 React 开发环境

    在终端执行以下命令创建项目: 1.指定创建的项目位置(这里以桌面为例) cd Desktop 2.创建 React 项目 npx create-react-app my-app 3.进入项目并启动 c ...

  2. destoon7.0后台栏目分类一键获取所有栏目拼音目录

    近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...

  3. 2.spring的主要模块作用

    spring中大约包含20过个模块, 主要包括以下几部分: 1. Core Container Core Container(核心容器)包含Core,Beans,Context和Expression ...

  4. svg坐标转换

    本文内容转自 how-to-translate-from-dom-to-svg-coordinates-and-back-again svg coordinate system Why we need ...

  5. 1045 Favorite Color Stripe (30)

    Eva is trying to make her own color stripe out of a given one. She would like to keep only her favor ...

  6. vxlan和macvlan操作

    vxlan: 192.168.1.112 ———— 192.168.1.108 —— 192.168.1.109192.168.1.112配置:docker run -d -p 8500:8500 - ...

  7. ICEM——倒角的处理

    原视频下载地址: https://pan.baidu.com/s/1miHMOuk 密码: knc4

  8. ICEM-八分之一球体

    原视频下载链接:https://yunpan.cn/c6seunjgbwRhJ  访问密码 c780

  9. Echarts:实现拖拽效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  10. PHP无法使用curl_init()函数

    主要针对在Ubuntu16.04搭建CRMEB环境时,监测环境会出现一个curl_init问题,这时只需执行如下命令即可解决: sudo apt-get install php-curl