Наследование типов Pointer-Attribute
В соответствии со спецификацией DCE каждый IDL-файл должен определять атрибуты для своих указателей. Если явный атрибут не назначен указателю, указатель использует значение, указанное в ключевое слово [pointer_default]. Некоторые реализации DCE не допускают неатрибуированные указатели. Если указатель не имеет явного атрибута, IDL-файл должен иметь спецификацию [pointer_default] , чтобы можно было задать атрибут указателя.
В режиме по умолчанию (Microsoft-extensions) можно указать атрибут указателя в IDL-файле, который импортирует определяющий IDL-файл. Указатели, определенные в одном IDL-файле, могут наследовать атрибуты, указанные в других файлах IDL. Кроме того, в режиме по умолчанию IDL-файлы могут содержать неатрибуированные указатели. Если ни базовые, ни импортированные IDL-файлы не указывают атрибут указателя или [pointer_default], неатрибуированные указатели интерпретируются как уникальные указатели.
Компилятор MIDL назначает атрибуты указателя указателям, используя следующие правила приоритета (1 — самый высокий).
Приоритет | Описание |
---|---|
1 | Явные атрибуты указателя применяются к указателю на сайте определения или использования. |
2 | По умолчанию используется атрибут [pointer_default] в IDL-файле, который определяет тип . |
3 | По умолчанию используется атрибут [pointer_default] в IDL-файле, который импортирует тип . |
4 | Значение по умолчанию — [ ptr] в режиме совместимости DCE или [ unique] в режиме Microsoft-extensions. |