Pointer-Attribute 类型继承
根据 DCE 规范,每个 IDL 文件必须为其指针定义属性。 如果未将显式属性分配给指针,则指针将使用 [pointer_default] 关键字指定的值。 某些 DCE 实现不允许未分配的指针。 如果指针没有显式属性,则 IDL 文件必须具有 [pointer_default] 规范,以便可以设置指针属性。
在默认(Microsoft扩展)模式下,可以在导入定义 IDL 文件的 IDL 文件中指定指针的属性。 在一个 IDL 文件中定义的指针可以继承在其他 IDL 文件中指定的属性。 此外,在默认模式下,IDL 文件可以包含未分配的指针。 如果基文件和导入的 IDL 文件都未指定指针属性或 [pointer_default],则未指定的指针将解释为唯一指针。
MIDL 编译器使用以下优先级规则将指针属性分配给指针(1 最高)。
优先权 | 描述 |
---|---|
1 | 显式指针属性应用于定义或使用站点的指针。 |
2 | 默认值是定义类型的 IDL 文件中 [pointer_default] 属性。 |
3 | 默认值为导入类型的 IDL 文件中的 [pointer_default] 属性。 |
4 | 默认值为 DCE 兼容模式下的 [ptr] 或 [唯一] 在 Microsoft 扩展模式下。 |