атрибут модуля
Инструкция module определяет группу функций, обычно это набор точек входа DLL.
[
attributes
]
module modulename
{
elementlist
};
-
attributes
-
Атрибуты [uuid], [version], [helpstring], [helpcontext], [hidden] и [dllname] принимаются перед инструкцией модуля . Дополнительные сведения об атрибутах, принятых перед определением модуля, см. в разделе Описания атрибутов в книге OLE-автоматизации. Атрибут [dllname] является обязательным. Если атрибут [uuid] опущен, модуль не указывается однозначно в системе.
-
имя_модуля
-
Имя модуля.
-
elementlist
-
Список определений констант и прототипов функций для каждой функции в библиотеке DLL. В списке функций может появиться любое количество определений функций. Функция в списке функций имеет следующую форму:
[атрибуты] returntype [имя funcname соглашения о вызовах](params);
[атрибуты] const constanttype constname = constval;
Для const принимаются только атрибуты [helpstring] и [helpcontext].
В функции в модуле принимаются следующие атрибуты: [helpstring], [helpcontext], [string], [entry], [propget], [propput], [propputref] и [vararg]. Если указан параметр [vararg], последний параметр должен быть безопасным массивом типа VARIANT .
Необязательным соглашением о вызовах может быть одно из __pascal/_pascal/pascal, __cdecl/_cdecl/cdecl или __stdcall/_stdcall/stdcall. Параметр типа соглашения о вызовах может включать до двух символов подчеркивания в начале.
Список параметров — это разделенный запятыми список:
[атрибуты]
Тип может быть любым ранее объявленным или встроенным типом, указателем на любой тип или указателем на встроенный тип. Атрибуты параметров:
Если используется [необязательный] тип этих параметров должен быть VARIANT или VARIANT*.
Выходные данные файла заголовка (.h) для модулей — это ряд прототипов функций. Модуль ключевое слово и окружающие квадратные скобки удаляются из выходных данных файла заголовка (H), но перед прототипами вставляется комментарий (// modulename). Перед объявлениями вставляется ключевое слово extern.
[
uuid(12345678-1234-1234-1234-123456789ABC),
helpstring("This is not GDI.EXE"),
helpcontext(190),
dllname("MATH.DLL")
]
module somemodule
{
[helpstring("Color for the frame")]
unsigned long const COLOR_FRAME = 0xH80000006;
[helpstring("Not a rectangle but a square"),
entry(1)]
pascal double square([in] double x);
};