Параметр /osf
Параметр /osf обеспечивает строгую совместимость с OSF DCE.
midl /osf
Этот параметр не имеет параметров.
Используйте этот параметр, если приложению требуется строгая совместимость с OSF DCE по причинам переносимости.
В режиме /osf пакет RpcSs автоматически включается при использовании полных указателей, аргументов, требующих выделения памяти, или при использовании атрибута enable_allocate . Это означает, что вам не нужно предоставлять функции midl_user_allocate и midl_user_free в клиентском и серверном приложении.
Следующие расширенные возможности Майкрософт недоступны при компиляции с параметром /osf :
- Абстрактные деклараторы (неименованные параметры) в IDL-файле.
- Определения интерфейсов для COM-объектов.
- Имена интерфейсов с более чем 17 символами.
- Атрибуты только MIDL, такие как wire_marshal, user_marshal и расширения typelib (ODL).
- Использование ключевых слов ACF в IDL-файле (параметр MIDL /app_config ).
- Статические функции обратного вызова на клиенте.
- Асинхронный атрибут.
- cpp_quote и #pragma midl_echo.
- wchar_t расширенные типы символов, константы и строки.
- инициализация перечисления (разреженные перечислители).
- спецификация размера только для out-only.
- Смешанные указатели и массивы размеров.
- Выражения, используемые для описателей размера и дискриминатора.
- Явный дескриптор параметров в любой позиции в списке аргументов. В режиме /osf компилятор MIDL ищет явный дескриптор привязки в качестве первого параметра. Если первый параметр не является дескриптором привязки и указан один или несколько дескрипторов контекста, в качестве дескриптора привязки используется крайний левый дескриптор контекста. Если первый параметр не является дескриптором и нет дескрипторов контекста, процедура использует неявную привязку с помощью атрибута ACF implicit_handle или auto_handle.
- Наследование типа атрибута указателя. OSF DCE не допускает ненаписанные указатели. Поэтому в режиме /osf каждый IDL-файл должен определять атрибуты для своих указателей. Если какой-либо указатель не имеет явного атрибута, IDL-файл должен иметь спецификацию pointer_default , чтобы задать тип указателя.
- Несколько интерфейсов в IDL-файле.
- Определения за пределами блока интерфейса.
- Квалификаторы типов, например far и stdcall.
- Пропуск атрибутов направления.
Следующие расширения языка C/C++ недоступны при компиляции с параметром /osf :
- Битовые поля в структурах и объединениях.
- Однострочные комментарии, разделенные двумя символами косой черты (//).
- Внешние объявления.
- Процедуры с многоточием в списке параметров.
- Введите int.
- Тип void * (кроме атрибута context_handle ).
- Квалификаторы типов, включая форму с префиксом ANSI, содержат два символа подчеркивания: __cdecl, cdecl, const, const, __export, export, __far, far, __loadds, loadds, __near, near, __pascal, pascal, __stdcall, stdcall, __volatile и volatile.
- Любое предупреждение # pragma или #pragma комментарий.
- Сериализация типов.
- Тип данных __int3264 .
- Параметр /protocol и синтаксис передачи ndr64.
midl /osf filename.idl
midl /osf /app_config имя_файла.idl