/osf 开关
/osf 开关强制与 OSF DCE 严格兼容。
midl /osf
切换选项
此开关没有参数。
注解
如果应用程序需要与 OSF DCE 严格兼容,出于可移植性原因,请使用此开关。
在 /osf 模式下,使用完整指针、参数需要内存分配或使用 enable_allocate 属性时,RpcSs 包会自动启用。 这意味着你不必在客户端和服务器应用程序中提供 midl_user_allocate 和 midl_user_free 函数。
使用 /osf 开关进行编译时,以下 Microsoft 扩展功能不可用:
- 在 IDL 文件中,抽象声明符 (未命名的参数) 。
- COM 对象的接口定义。
- 具有 17 个字符以上的接口名称。
- 仅限 MIDL 的属性,例如 wire_marshal、 user_marshal 和 typelib (ODL) 扩展。
- 在 IDL 文件中使用 ACF 关键字 (MIDL /app_config 选项) 。
- 客户端上的静态回调函数。
- 异步属性。
- cpp_quote 和 #pragma midl_echo。
- wchar_t 宽字符类型、常量和字符串。
- 枚举 初始化 (稀疏枚举器) 。
- 仅输出大小规范。
- 混合大小指针和大小数组。
- 用于大小和歧视性说明符的表达式。
- 在参数列表中的任何位置显式处理参数。 在 /osf 模式下,MIDL 编译器查找显式绑定句柄作为第一个参数。 当第一个参数不是绑定句柄并且指定了一个或多个上下文句柄时,最左侧的上下文句柄用作绑定句柄。 当第一个参数不是句柄且没有上下文句柄时,该过程将使用 ACF 属性 implicit_handle 或 auto_handle的隐式绑定。
- 指针属性类型继承。 OSF DCE 不允许未分配的指针。 因此,在 /osf 模式下,每个 IDL 文件必须为其指针定义属性。 如果任何指针没有显式属性,则 IDL 文件必须具有 pointer_default 规范才能设置指针类型。
- IDL 文件中的多个接口。
- 接口块外部的定义。
- 类型限定符,如 far 和 stdcall。
- 省略方向属性。
使用 /osf 开关进行编译时,以下 C/C++ 语言扩展不可用:
- 结构和联合中的位字段。
- 用两个斜杠字符分隔的单行注释 (//) 。
- 外部声明。
- 参数列表中的省略号的过程。
- 键入 int。
- 类型 void * (与 context_handle 属性) 除外。
- 类型限定符(包括具有 ANSI 一致性前缀的表单)包含两个下划线字符:__cdecl、cdecl、const、const、__export、export、__far、far、__loadds、loadds、__near、near、__pascal、pascal、__stdcall、stdcall、__volatile 和 volatile。
- 任何 # 杂注 警告或 #pragma 注释。
- 类型序列化。
- __int3264数据类型。
- /protocol 开关和 ndr64 传输语法。
示例
midl /osf filename.idl
midl /osf /app_config filename.idl
另请参阅