/osf 开关

/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 宽字符类型、常量和字符串。
  • 枚举 初始化 (稀疏枚举器) 。
  • 仅输出大小规范。
  • 混合大小指针和大小数组。
  • 用于大小和歧视性说明符的表达式。
  • 在参数列表中的任何位置显式处理参数。 在 /osf 模式下,MIDL 编译器查找显式绑定句柄作为第一个参数。 当第一个参数不是绑定句柄并且指定了一个或多个上下文句柄时,最左侧的上下文句柄用作绑定句柄。 当第一个参数不是句柄且没有上下文句柄时,该过程将使用 ACF 属性 implicit_handleauto_handle的隐式绑定。
  • 指针属性类型继承。 OSF DCE 不允许未分配的指针。 因此,在 /osf 模式下,每个 IDL 文件必须为其指针定义属性。 如果任何指针没有显式属性,则 IDL 文件必须具有 pointer_default 规范才能设置指针类型。
  • IDL 文件中的多个接口。
  • 接口块外部的定义。
  • 类型限定符,如 farstdcall
  • 省略方向属性。

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

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

示例

midl /osf filename.idl

midl /osf /app_config filename.idl

另请参阅

常规 MIDL 命令行语法

/app_config

/ms_ext

Rpcss 内存管理包