ISO/IEC 9899:2011 条款6.7——声明
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)。
ISO/IEC 9899:2011 条款6.7——声明的更多相关文章
- 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.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 条款5——5.1.2 执行环境
5.1.2 执行环境 1.定义了两个执行环境:独立式(freestanding)以及宿主的(hosted).在这两种情况下,当一个派定的C函数被执行环境调用时,程序就启动.所有具有静态存储周期的对象应 ...
- ISO/IEC 9899:2011 条款6——语言
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
- ISO/IEC 9899:2011 条款6.5——表达式
6.5 表达式 1.一个表达式是操作符与操作数的一个序列,这些操作符与操作数指定了一个值的计算,或指派一个对象或一个函数,或是生成副作用,或执行上述操作的组合.对一个操作符的操作数的值计算顺序排在对该 ...
- ISO/IEC 9899:2011 条款6.8.6——跳转语句
6.8.6 跳转语句 语法 1.jump-statement: goto identifier ; continue ; break ; return expressio ...
随机推荐
- java 静态代码块和spring @value等注解注入顺序
java 静态代码块和spring @value等注解注入顺序 问题所在 先上代码 java方法 @Value("${mf.cashost}") public static S ...
- web 错误代码解析
404表示文件或资源未找到java WEB常见的错误代码1.1xx-信息提示:这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应.100-继续.101-切换协议.2. ...
- MyEclipse设置文件默认打开方式
MyEclipse设置文件默认打开方式 依次点击: [MyEclipse]-> [Preferences] -> [General] -> [Editors] -> [File ...
- java设计模式解析(1) Observer观察者模式
设计模式系列文章 java设计模式解析(1) Observer观察者模式 java设计模式解析(2) Proxy代理模式 java设计模式解析(3) Factory工厂模式 java设计模式解析( ...
- C#延迟初始化Lazy<T>
1. 概述 我们创建某一个对象需要很大的消耗,而这个对象在运行过程中又不一定用到,为了避免每次运行都创建该对象,这时候延迟初始化(也叫延迟实例化)就出场了. 延迟初始化出现于.NET 4.0,主要用于 ...
- commons-dbutils 字段名称转换,支持驼峰字段名
你能遇到的问题,只要是普遍存在的,大家都会遇到,那么,就一定有现成的解决方案. 在阅读 commons-dbutils 的文档时, BeanHandler 的第二个参数可以达到这个目的.只需传入一个实 ...
- Flatten List
Description Given a list, each element in the list can be a list or integer. flatten it into a simpl ...
- codepush安装
https://github.com/lisong/code-push-server/blob/master/docs/README.md =====> 安装mysql下载mysql yum r ...
- Acwing P298 围栏
Analysis ①首先将所有粉刷匠,按照必须刷的小木块Si从小到大排序. 上面这个操作为了保证我们可以顺序处理. ②我们可以设f[i][j]表示为,前i个粉刷匠,刷了前i个木块.可以有些木块选择不刷 ...
- 检测 nginx 关闭切换keepalived
检测nginx 端口启用 关闭 keepalived 检测 nginx 进程:然后关闭 keepalived ,关闭漂移IP : cat nginx_pid.sh #!/bin/bash whil ...