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