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或是extern。如果_Thread_local出现在一个对象的任一声明中,那么它应该出现在那个对象的每个声明中。

4、_Thread_local不应该出现在一个函数声明的声明说明符中。

语义

5、typedef说明符被称为一个“存储类说明符”,只是用于语法上的便利性;它在6.7.8中讨论。各种连接与存储周期的意义在6.2.2与6.2.4中讨论。

6、一个对象的一个标识符带有register说明符的声明建议了对该对象的访问越快越好。对此建议有效性的扩展是由实现定义的。[注:实现可以将任一register声明简单地看作为auto声明。然而,无论实际上是否用了可寻址的存储,具有存储类说明符register的一个对象的任一部分的地址不能被计算,不管是显式的(通过使用单目 & 操作符,在6.5.3.2中讨论),还是隐式的(通过将一个数组名转为一个指针(在6.3.2.1中讨论))。从而,唯一能被应用于具有存储类说明符register的一个数组声明的操作符是sizeof和_Alignof。]

7、对一个具有语句块作用域的函数标识符的声明应该不具有显式的存储类说明符,除了extern。[译者注:看如下代码:

void fun1(void)
{
} static void fun2(void)
{
} int main(void)
{
extern void fun1(void); // OK static void fun2(void); // ERROR: 在语句块作用域中所声明的函数不能具有static存储类
}

]

8、如果一个聚合或联合体对象用具有除了typedef之外的一个存储类标识符进行声明,那么从该存储类说明符导出的结果属性,除了关于连接,也应用于该对象的成员,并且也递归地应用于任一聚合或联合体成员对象。

ISO/IEC 9899:2011 条款6.7.1——存储类说明符的更多相关文章

  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 ...

  2. ISO/IEC 9899:2011 条款6.7.6——声明符

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

  3. ISO/IEC 9899:2011 条款3——术语、定义与符号

    3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...

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

    5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...

  5. ISO/IEC 9899:2011 条款6.4.2——标识符

    6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier    identifier-nondigit identifie ...

  6. ISO/IEC 9899:2011 条款6.7.3——类型限定符

    6.7.3 类型限定符 语法 1.type-qualifier: const restrict volatile _Atomic 约束 2.除了指针类型(其被引用的类型是一个对象类型)之外的类型,不应 ...

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

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

  8. ISO/IEC 9899:2011 条款4——标准顺从

    4. 标准顺从 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为 ...

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

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

随机推荐

  1. java基础(12)---异常

    一.throws和throw 用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. 区别: 1.概念 throws E1,E2,E3只是告诉程序这个 ...

  2. ldconfig 让安装的 php 的rdkafka生效

    原文:https://www.cnblogs.com/schips/p/10183111.html linux中ldconfig的使用介绍   ldconfig是一个动态链接库管理命令,其目的为了让动 ...

  3. 五.Protobuf3 枚举

    Protobuf3 枚举 定义消息类型时,您可能希望它的一个字段有一个预定义的值列表.例如,假设您希望为每个SearchRequest添加一个corpus字段,其中语料库可以是UNIVERSAL.WE ...

  4. python是什么编程语言。

    python是一门动态解释性的强类型定义语言.

  5. java文件夹上传下载组件

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  6. WebAPI学习

    WebAPI概述 今天的web计算平台包含了广泛的功能,其中的大部分均可以通过API(应用程序编程接口)访问. web平台归为6个基本设施,都会用到webapi,包括存储服务.消息服务.计算服务.信息 ...

  7. luogu P1058 立体图

    做了这个题后明确了自己的定位... 恩...普及- 题目大意估计都知道.. 给个传送门:   luogu 做了半上午 + 一整个下午的题... 占了我今天到的绝大多数时间. 其实此题不难, 核心代码我 ...

  8. (4)Angular的开发

    angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML. 轻松构建SPA应用程序,单一页面应用程序 h ...

  9. UOJ188. 【UR #13】Sanrd [min_25筛]

    传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...

  10. makefile通用版本(一)

    实际当中程序文件比较大,这时候对文件进行分类,分为头文件.源文件.目标文件.可执行文件.也就是说通常将文件按照文件类型放在不同的目录当中,这个时候的Makefile需要统一管理这些文件,将生产的目标文 ...