Там, где я работаю, мы все еще используем Delphi 2009. Я случайно посмотрел на модуль Forms в VCL и наткнулся на:
[UIPermission(SecurityAction.LinkDemand, Window=UIPermissionWindow.AllWindows)]
function DisableTaskWindows(ActiveWindow: HWnd): TTaskWindowList;
Этот атрибут явно является классом CLR UIPermissionAttribute
, но в отличие от других ссылок на CLR, этот атрибут не включен в директивы условной компиляции .
Это меня удивило, потому что, AFAIK, в версиях Delphi Win32 до 2010 скобки использовались только для обозначения индекса вмассивы и типы коллекций, определение наборов и назначение идентификаторов GUID для интерфейсов.Похоже, что это не так.
Я провел поиск по регулярному выражению и нашел десятки примеров по всему RTL / VCL.Некоторые из них были атрибутами для типов, а некоторые для методов.
Они просто игнорируются компилятором или они служат какой-то цели в Win32?
Я также нашел синтаксис, который выглядел следующим образом:
[!UnitName]
[!InterfaceName]
Что, похоже, связано с генерацией исходных файлов из шаблона в мастере IDE, но их не было в исходной папке RTL.Они были в папке хранилища объектов.