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或是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——存储类说明符的更多相关文章
- ISO/IEC 9899:2011 条款6.4.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- ISO/IEC 9899:2011 条款6.7.6——声明符
6.7.6 声明符 语法 1.declarator: pointeropt direct-declarator direct-declarator: identifier ( declar ...
- ISO/IEC 9899:2011 条款3——术语、定义与符号
3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...
- ISO/IEC 9899:2011 条款5——5.2.1 字符集
5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...
- ISO/IEC 9899:2011 条款6.4.2——标识符
6.4.2 标识符 6.4.2.1 通用 语法 1.identifier: identifier-nodigit identifier identifier-nondigit identifie ...
- ISO/IEC 9899:2011 条款6.7.3——类型限定符
6.7.3 类型限定符 语法 1.type-qualifier: const restrict volatile _Atomic 约束 2.除了指针类型(其被引用的类型是一个对象类型)之外的类型,不应 ...
- ISO/IEC 9899:2011 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
- ISO/IEC 9899:2011 条款4——标准顺从
4. 标准顺从 1.在本国际标准中,“应该”被解释为对一个实现或一个程序的要求:相反地,“不该”被解释为禁用. 2.如果违反了出现在一个强制规定或运行时强制规定之外的“应该”或“不该”要求,那么该行为 ...
- ISO/IEC 9899:2011 条款6——语言
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
随机推荐
- UVA816 Abbott's Revenge (三元组BFS)
题目描述: 输入输出: 输入样例: SAMPLE 3 1 N 3 3 1 1 WL NR * 1 2 WLF NR ER * 1 3 NL ER * 2 1 SL WR NF * 2 2 SL WF ...
- mac pro下安装brew软件包管理工具
Homebrew简称brew,OSX上的软件包管理工具,在Mac终端可以通过brew安装.更新.卸载软件. 1.打开终端直接输入下面指令回车: ruby -e "$(curl -fsSL h ...
- 基于h5+的微信分享,hbuilder打包
1.打开app项目的manifest.json的文件,选择模块权限配置,将Share(分享)模块添加至已选模块中 2.选择SDK配置,在plus.share·分享中,勾选□ 微信消息及朋友圈,配置好a ...
- spring boot学习笔记(二)创建spring boot项目
用eclipse(需要用高版本,要不然弄不出来):new →Spring Sarter Project 用IDEA:一般默认 一般默认 入门级的先 剩下的一般默认... 一.项目至少有下面的东西,里面 ...
- tomcat绑定项目classes路径
在Host中加入如下内容: <Context path="" docBase="D:\svn\MainSource\WebRoot" debug=&quo ...
- indexOf()、lastIndexOf()、startsWith()等方法应用
- JSONObject例子
说起JSON,大家就谈不上陌生了,因为对于数据传输语言,各位只认json,即使有XML语言,但是各位很少用吧.我也是,但是之前用过的json转换工具各种各样,我记忆中有过GSON(google).fa ...
- Java - Annotation使用
本文转载于(这个写的很好):https://www.cnblogs.com/be-forward-to-help-others/p/6846821.html Annotation Annotation ...
- spring boot 集成 redis lettuce(jedis)
spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端 引入依赖 <!-- spring boot ...
- c# 异步方法中HttpContext.Current为空
调用异步方法前 HttpContext context = System.Web.HttpContext.Current; HttpRuntime.Cache.Insert("context ...