ISO/IEC 9899:2011 条款6.7.1——存储类说明符
2015-10-14 22:16
288 查看
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。[译者注:看如下代码:
]
8、如果一个聚合或联合体对象用具有除了typedef之外的一个存储类标识符进行声明,那么从该存储类说明符导出的结果属性,除了关于连接,也应用于该对象的成员,并且也递归地应用于任一聚合或联合体成员对象。
语法
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之外的一个存储类标识符进行声明,那么从该存储类说明符导出的结果属性,除了关于连接,也应用于该对象的成员,并且也递归地应用于任一聚合或联合体成员对象。
相关文章推荐
- 黑马程序员_JAVA笔记之(File类,过滤器,递归练习)
- PL/SQL Developer 连接Oracle数据库详细配置方法
- C# Datetime.Ticks将时间转换成以秒为单位与格林尼治时间
- 更踪设备的地理位置(LocationManager)
- 九度OJ 1004:Median
- oracle 命令1
- duilib库分析: 消息流程分析
- linux 使用proxychains连接代理服务器
- 高性能javascript 笔记 第一章 loading and executing (一)
- 九度OJ 1004:Median
- PostgreSQL general public partition table trigger
- 华三S3100V2 、华为5700 交换机 (低端二层)配置
- 黑马程序员——Java基础语法(一)
- 笔试题——一次HTTP访问流程步骤
- Error:" Can't locate Term/ReadKey.pm in @INC" 的解决方法
- 虞美人盛开的山坡片尾曲_さよならの夏_离别的夏天_歌词_带假名及翻译
- 针对不等式的定积分计算
- 智能指针auto_ptr
- 关于appStore评分的相关说明--转自张诚教授
- PostgreSQL aggregate function customize