【文件属性】:
文件名称:命名空间别名限定符-eda技术实用教程 vhdl版(第四版) 潘松 科学出版社
文件大小:4.12MB
文件格式:PDF
更新时间:2024-07-07 04:50:07
C#
9.7 命名空间别名限定符
命名空间别名限定符 namespace alias qualifier :: 让类型名称的查找不受引入的新类型和新成员的影响
成为可能。命名空间别名限定符总是出现在两个标识符之间,这两个标识符分别称为左标识符和右标识
符。与普通的 . 标识符不同,:: 限定符的左标识符仅作为 extern 或 using 别名进行查找。
qualified-alias-member 定义如下:
qualified-alias-member:
identifier :: identifier type-argument-listopt
qualified-alias-member 可用作 namespace-or-type-name(第 3.8 节)或用作 member-access(第 7.6.4 节)
中的左操作数。
qualified-alias-member 具有下列两种形式之一:
• N::I,其中 N 和 I 表示标识符, 是类型实参列表。(K 始终至少为 1。)
• N::I,,其中 N 和 I 表示标识符。(在此情况下,K 视作 0。)
如果使用此表示法,qualified-alias-member 的含义按下面的过程确定:
• 如果 N 为标识符 global,则在全局命名空间中搜索 I:
o 如果全局命名空间包含名为 I 的命名空间,并且 K 为 0,则 qualified-alias-member 即表示该命名
空间。
o 否则,如果该全局命名空间包含名为 I 的非泛型类型,并且 K 为 0,则 qualified-alias-member 即
表示该类型。
o 否则,如果该全局命名空间包含名为 I 的带有 K 个类型形参的类型,则 qualified-alias-member
即表示使用给定的类型实参构造的该类型。
o 否则,qualified-alias-member 是不确定的,并发生编译时错误。
• 否则,从直接包含 qualified-alias-member 的命名空间声明(第 9.2 节)(如果有)开始,继续处理
每一个包含它的命名空间声明(如果有),最后在包含 qualified-alias-member 的编译单元结束,在
找到实体之前,将计算下列步骤:
o 如果命名空间声明或编译单元包含将 N 与某个类型相关联的 using-alias-directive,则 qualified-
alias-member 是不确定的,并发生编译时错误。
o 否则,如果命名空间声明或编译单元包含将 N 与某个命名空间相关联的 extern-alias-directive 或
using-alias-directive,则:
• 如果与 N 关联的命名空间包含名为 I 的命名空间,并且 K 为 0,则 qualified-alias-member 即
表示该命名空间。
• 否则,如果与 N 关联的命名空间包含名为 I 的非泛型类型,并且 K 为 0,则 qualified-alias-
member 即表示该类型。
• 否则,如果与 N 关联的命名空间包含名为 I 的带有 K 个类型形参的类型,则 qualified-alias-
member 即表示使用给定的类型实参构造的该类型。
• 否则,qualified-alias-member 是不确定的,并发生编译时错误。
• 否则,qualified-alias-member 是不确定的,并发生编译时错误。