ISO/IEC 9899:2011 条款6.2.1——标识符的作用域
6.2.1 标识符的作用域
1、一个标识符可以表示一个对象;一个函数;一个结构体、联合体或枚举的一个标签或一个成员,一个typedef名;一个标签名;一个宏名;或一个宏形参。相同的标识符可以在程序中不同的点表示不同的实体。一个枚举的一个成员被称为一个枚举常量。宏名以及宏形参在这里不再进一步考虑,因为在程序翻译的语义阶段之前,任一源文件中宏名的发生用组成它们宏定义的预处理符记序列来代替。
2、对于一个标识符所指派的每个不同的实体,该标识符只有在程序文本的一个区域内是可见的(即,可以被使用),这个区域称为其作用域。由同一个标识符所指派的不同实体,要么具有不同的作用域,要么在不同的名字空间中。有四种类型的作用域:函数,文件,语句块,以及函数原型。(一个函数原型是对一个函数的声明,它声明了函数形参的类型。)
3、一个标签名仅仅是具有函数作用域的一种标识符。它可以被用在(在一个goto语句中)它所出现的函数中的任何地方,并且通过其语法出现的地方(跟在一个:和一条语句后面)隐式地声明。
4、每个其它标识符具有由其声明的位置所确定的作用域(在一个声明符或类型说明符(specifier)中)。如果声明该标识符的声明符或类型说明符出现在形参列表的任一语句块的外部,那么该标识符具有文件作用域,这终结在此翻译单元的末尾。如果声明符或类型说明符出现在一个语句块内或一个函数定义的形参声明列表内,那么该标识符具有语句块作用域,这终结在其所关联的语句块的末尾处。如果声明该标识符的声明符或类型说明符出现在一个函数原型(不作为一个函数定义的一部分)中的形参声明列表内,那么该标识符具有函数原型作用域,这终结在函数声明符的末尾处。如果一个标识符在同一名字空间指派了两个不同的实体,那么这两个作用域可能会重叠。如果重叠,俺么一个实体的作用域(内部作用域)将会严格地在另一个实体的作用域(外部作用域)之前结束。在内部作用域中,标识符指派了在内部作用域中声明的实体;在外部作用域所声明的实体在内部作用域中被隐藏(并且不可见)。
5、除非显式地声明,本国际标准使用术语“标识符”来引用某些实体(与语法构造对照起来),它在相关的名字空间中引用该实体,其声明在标识符发生的那点处可见。
6、两个标识符具有相同的作用域,当且仅当它们的作用域在同一点处终结。
7、结构题、联合体以及枚举标签具有就在该标签出现处(在声明此标签的一个类型标识符中)之后开始的作用域。每个枚举常量具有就在一个枚举符列表中其定义枚举符的出现处开始的作用域。任一其它的标识符具有就在其声明符完成之后开始的作用域。
8、作为一个特殊的例子,一个类型名(它不是一个标识符的一个声明)被认作为具有一个作用域,就在此类型名内部的地方开始,此处缺省的标识符会出现,就好比它没有被缺省。
ISO/IEC 9899:2011 条款6.2.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.2.2——标识符的连接
6.2.2 标识符的连接 1.在不同作用域中声明的一个标识符或在同一作用域多次出现的一个标识符可以被用作对同一个对象或函数的引用,通过一个称为连接的过程.[注:在两个不同的标识符之间没有连接.]有三种 ...
- ISO/IEC 9899:2011 条款6.2.3——标识符的名字空间
6.2.3 标识符的名字空间 1.如果一个特定标识符的多个声明在一个翻译单元的任意一点可见,那么语法上下文会区分对不同实体的引用.从而,对于标识符各种不同的类别具有独立的名字空间: ——标签名(通过标 ...
- 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.3——通用字符名
6.4.3 通用字符名 语法 1.通用字符名: universal_character-name: \u hex-quad(四位十六进制数) \U hex-quad hex-quad hex-quad ...
- 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.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
随机推荐
- 【20191118会议】针对华为云CCE 问题总结
针对华为云CCE问题总结 如何购买CCE集群 可以分为测试环境和生产环境,针对使用范围进行购买集群. 测试环境 可以进行公用 生产环境建议使用单独集群 尤其针对部门大 耦合性不高 ,生产环境 建议使用 ...
- CentOS8 NextCloud 私有云存储搭建
本文首发:https://www.somata.work/2019/CentOS8NextCloudBuild.html 之前发现 Owncloud 越来越捞了,推出了企业版和社区版,近几日突然发现原 ...
- Redis未授权访问漏洞复现及修复方案
首先,第一个复现Redis未授权访问这个漏洞是有原因的,在 2019-07-24 的某一天,我同学的服务器突然特别卡,卡到连不上的那种,通过 top,free,netstat 等命令查看后发现,CPU ...
- python函数式编程-匿名函数
>>> map(lambda x: x * x, [, , , , , , , , ]) [, , , , , , , , ] 关键字lambda表示匿名函数,冒号前面的x表示函数参 ...
- MyBatis3-topic-01 -安装/下载/官方文档 -执行输入一条已经映射的sql语句
mybatis XML 映射配置文件 (官方文档) -对象工厂(objectFactory) -配置环境(environments) -映射器(mappers) 本地IDEA搭建/测试步骤 创建数据库 ...
- python listdir() 中文路径 中文文件夹 乱码 解决方法
python listdir() 中文路径 中文文件夹 乱码 解决方法 listdir(path)返回的结果的编码似乎和我们提供的 path 参数的编码有关: path = 'd:/test' try ...
- python学习之多线程多进程
python基础 进程&线程 进程是一组资源的集合,运行一个系统就是打开了一个进程,如果同时打开了两个记事本就是开启了两个进程,进程是一个笼统的概念,进程中由线程干活工作,由进程统一管理 一个 ...
- 小技巧:with用法 pycharm控制台输出带颜色的文字 打印进度条的
with用法 with用法在python中是一个很独特的用法,因为别的语言的中没有这个用法.所以针对这个特点我们来做一次总结,什么样的情况下可以同with 我们学到的有文件的操作,和acquire ...
- AJAX学习笔记——jQuery中的AJAX
用jQuery实现Ajax jQuery.ajax([settings]) 1.type:类型, "POST"或"GET" ,默认为"GET" ...
- 文件读写(二)利用SteamReader和StreamWrite类处理字符串、FileSystemWatcher、BinaryReader/BinaryWriter
一.读写类: TextReader/TextWriter:文本读写,抽象类 TextReader,其派生类: StreamReader:以一种特定的编码从字节流中读取字符. StringReader: ...