Comutador /osf
A opção /osf força a compatibilidade estrita com o DCE do OSF.
midl /osf
Essa opção não tem parâmetros.
Use essa opção se o aplicativo exigir compatibilidade estrita com o OSF DCE por motivos de portabilidade.
No modo /osf , o pacote RpcSs é habilitado automaticamente quando você usa ponteiros completos, os argumentos exigem alocação de memória ou quando você usa o atributo enable_allocate . Isso significa que você não precisa fornecer as funções midl_user_allocate e midl_user_free em seu aplicativo cliente e servidor.
Os seguintes recursos estendidos pela Microsoft não estão disponíveis quando você compila com a opção /osf :
- Declaradores abstratos (parâmetros não nomeados) no arquivo IDL.
- Definições de interface para objetos COM.
- Nomes de interface com mais de 17 caracteres.
- Atributos somente MIDL, como wire_marshal, user_marshal e extensões de typelib (ODL).
- Usando palavras-chave ACF em um arquivo IDL (a opção MIDL /app_config ).
- Funções de retorno de chamada estáticas no cliente.
- O atributo assíncrono .
- cpp_quote e #pragma midl_echo.
- wchar_t tipos, constantes e cadeias de caracteres largos.
- inicialização de enumeração (enumeradores esparsos).
- Especificação de tamanho somente out-only.
- Ponteiros de tamanho misto e matrizes de tamanho.
- Expressões usadas para especificadores de tamanho e discriminatórios.
- Parâmetros de identificador explícitos em qualquer posição na lista de argumentos. No modo /osf , o compilador MIDL procura um identificador de associação explícito como o primeiro parâmetro. Quando o primeiro parâmetro não é um identificador de associação e um ou mais identificadores de contexto são especificados, o identificador de contexto mais à esquerda é usado como o identificador de associação. Quando o primeiro parâmetro não é um identificador e não há identificadores de contexto, o procedimento usa associação implícita usando o atributo ACF implicit_handle ou auto_handle.
- Herança de tipo de atributo de ponteiro. O OSF DCE não permite ponteiros não atribuídos. Portanto, no modo /osf , cada arquivo IDL deve definir atributos para seus ponteiros. Se qualquer ponteiro não tiver um atributo explícito, o arquivo IDL deverá ter uma especificação de pointer_default para definir o tipo de ponteiro.
- Várias interfaces em um arquivo IDL.
- Definições fora do bloco de interface.
- Digite qualificadores como far e stdcall.
- Omitindo atributos direcionais.
As seguintes extensões de linguagem C/C++ não estão disponíveis quando você compila com a opção /osf :
- Campos de bits em estruturas e uniões.
- Comentários de linha única delimitados com dois caracteres de barra (//).
- Declarações externas.
- Procedimentos com reticências na lista de parâmetros.
- Digite int.
- Tipo void * (exceto com o atributo context_handle ).
- Os qualificadores de tipo, incluindo o formulário com o prefixo compatível com ANSI, contêm dois caracteres de sublinhado: __cdecl, cdecl, const, const, __export, export, __far, far, __loadds, loadds, __near, near, __pascal, pascal, __stdcall, stdcall, __volatile e volatile.
- Qualquer aviso # pragma ou comentário #pragma .
- Tipo de serialização.
- O tipo de dados __int3264 .
- A opção /protocol e a sintaxe de transferência ndr64.
midl /osf filename.idl
midl /osf /app_config filename.idl