举个例子,让我们假设如下设置:
有明确的标签的标记环境中的模块定义A定义一个Foo类型。 而模块B与隐式标签的环境进口foo和它分配给吧。
当使用读取模块B流并不清楚我该标记的环境是有效的。 并模块B限定杆的标记环境(隐式)(被导入富)或是它被宣布(FOO中模块A为此显式)有效模块的标记环境?
我希望我解释的问题不够好
举个例子,让我们假设如下设置:
有明确的标签的标记环境中的模块定义A定义一个Foo类型。 而模块B与隐式标签的环境进口foo和它分配给吧。
当使用读取模块B流并不清楚我该标记的环境是有效的。 并模块B限定杆的标记环境(隐式)(被导入富)或是它被宣布(FOO中模块A为此显式)有效模块的标记环境?
我希望我解释的问题不够好
首先,进口不喜欢的#include文本的事情在C.它只是使类型不使用自己的模块名称限定他们访问的其他模块。
X.680 13.1注4具体讲你的问题:
“TagDefault”为模块定义的值只影响模块中明确定义这些类型。 它不影响进口类型的解释。
但请注意,如果在模块B(其中foo是进口的),你写的:
酒吧:: = [APPLICATION 5]富
这将相当于:
酒吧:: = [APPLICATION 5] IMPLICIT富
因为在模块B,其中正在定义的TaggedType,标记环境是隐式的。
什么音符的意思是说,如果在模块A,你有:
FOO :: = SEQUENCE {X [0] INTEGER}
然后在X上的标签是一个明确的标签,因为模块A的标记环境是明确的和富总是会用这种方法处理,即使被导入模块B,其隐式标签的环境。