/cstruct_out switch

此开关修改 COM 接口的 C 定义,该接口返回结构以匹配 C++ 实现者提供的 ABI。

midl /cstruct_out

切换选项

此开关没有参数。

备注

某些接口定义 (特别是) 中的 d3d12.idl 接口定义包含 __stdcall 返回结构的方法。 MSVC 中的 C 和 C++ ABI 在实现此类函数的方式上有所不同:

  • C 将它们视为将隐藏 this 指针作为第一个参数的普通函数。 如果所有值都是浮点,) 寄存器中返回,则编译程序应用小型结构优化,允许小于 8 个字节的结构 (或更大。 仅提升较大的结构以使用隐藏参数和调用方分配的返回值。
  • C++ 将它们视为成员函数。 为此,编译器 始终 将隐藏参数 (指向调用方分配的返回值的指针) 作为第二个参数插入到 this 该指针之后。 它还返回与其返回值相同的指针。

此开关强制生成的标头中的接口的 C 定义假定实现者使用的是 C++,并且 C 代码应改为显式使用 C++ ABI。 这意味着函数包含返回值指针的隐藏参数,并直接返回该指针而不是 结构。

另请参阅

常规 MIDL 命令行语法