/Os switch
/Os 开关指定混合模式方法,用于封送在客户端和服务器之间传递的存根代码。
midl /Os
此开关没有参数。
在决定封送代码的方法之前,需要考虑一些重要问题。 这些问题涉及大小和性能。 MIDL 编译器提供两种用于封送代码的方法:混合模式 (/Os) 和完全解释 (/Oi) 。 完全解释的方法完全脱机封送数据。 这大大减少了存根代码的大小,但也会导致性能降低。
将 MIDL 默认模式 /Oicf /robust 用于除向后兼容性以外的所有目的。 此模式是 MIDL 编译器的安全标准模式;只有在仔细考虑安全含义后,才应使用任何其他模式,并意识到未来的扩展将仅针对默认模式实现。 在混合模式下,编译器在生成的存根中封送某些参数内联。 虽然这会导致更大的存根大小,但它也可能提供更高的性能。
MIDL 仅在 /Oicf 模式下提供对多维数组和多维大小指针的完全支持。 在 /Os 和 /Oi 模式下,编译器支持简单情况,例如固定大小的数组。 在 /Os 或 /Oi 模式下使用多维数组可能会导致参数未正确封送。 当接口定义多维数组或多维大小指针的参数时,Microsoft 建议使用 /Oicf 命令行开关。
为了进一步定义封送数据的分级级别,此版本的 RPC 提供了 [optimize] 属性。 此属性用作 ACF 接口属性或操作属性,以选择封送处理模式。
midl /Os filename.idl