/osf switch

/osf 开关强制与 OSF DCE 严格兼容。

midl /osf

切换选项

此开关没有参数。

备注

如果出于可移植性的原因,应用程序需要与 OSF DCE 严格兼容,请使用此开关。

/osf 模式下,当使用完整指针、参数需要内存分配或使用 enable_allocate 属性时,将自动启用 RpcSs 包。 这意味着无需在客户端和服务器应用程序中提供 midl_user_allocatemidl_user_free 函数。

使用 /osf 开关编译时,以下 Microsoft 扩展功能不可用:

  • 抽象声明符 (IDL 文件中) 未命名参数。
  • COM 对象的接口定义。
  • 超过 17 个字符的接口名称。
  • 仅限 MIDL 的属性,例如 wire_marshaluser_marshal和 typelib (ODL) 扩展。
  • 在 IDL 文件中使用 ACF 关键字 (MIDL /app_config 选项) 。
  • 客户端上的静态回调函数。
  • 异步属性。
  • cpp_quote#pragma midl_echo
  • wchar_t 宽字符类型、常量和字符串。
  • 枚举 初始化 (稀疏枚举器) 。
  • out-only 大小规范。
  • 混合大小指针和大小数组。
  • 用于大小和鉴别器说明符的表达式。
  • 显式处理参数列表中任意位置的参数。 在 /osf 模式下,MIDL 编译器查找显式绑定句柄作为第一个参数。 如果第一个参数不是绑定句柄,并且指定了一个或多个上下文句柄,则最左侧的上下文句柄用作绑定句柄。 当第一个参数不是句柄且没有上下文句柄时,该过程使用使用 ACF 属性 implicit_handleauto_handle的隐式绑定。
  • 指针属性类型继承。 OSF DCE 不允许未归因的指针。 因此,在 /osf 模式下,每个 IDL 文件都必须为其指针定义属性。 如果任何指针没有显式属性,则 IDL 文件必须具有 pointer_default 规范才能设置指针类型。
  • IDL 文件中的多个接口。
  • 接口块外部的定义。
  • 类型限定符,例如 farstdcall
  • 省略方向属性。

使用 /osf 开关编译时,以下 C/C++ 语言扩展不可用:

  • 结构和联合中的位字段。
  • 用两个斜杠字符分隔的单行注释 (//) 。
  • 外部声明。
  • 参数列表中带有省略号的过程。
  • 键入 int
  • 键入 void * (,但 context_handle属性) 除外。
  • 类型限定符(包括带有 ANSI 一致性前缀的表单)包含两个下划线字符: __cdeclcdeclconstconst__exportexport__farfar__loaddsloadds__nearnear__pascalpascal__stdcallstdcall__volatilevolatile
  • 任何 # 杂注 警告或 #pragma 注释。
  • 类型序列化。
  • __int3264数据类型。
  • /protocol 开关和 ndr64 传输语法。

示例

midl /osf filename.idl

midl /osf /app_config filename.idl

另请参阅

常规 MIDL 命令行语法

/app_config

/ms_ext

Rpcss 内存管理包