Наследование типов 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.