/cstruct_out 參數

此參數會修改 COM 介面的 C 定義,以傳回結構以符合 C++ 實作器所提供的 ABI。

midl /cstruct_out

切換選項

此參數沒有參數。

備註

某些介面定義 (特別 d3d12.idl) 包含 __stdcall 傳回結構的方法。 MSVC 的 C 和 C++ ACI 在實作這類函式的方式上有所不同:

  • C 會將它們視為採用隱藏 this 指標做為第一個參數的純文字函式。 如果暫存器) 傳回浮點數,則編譯器會套用小型結構優化,讓結構小於 8 個位元組 (或更大。 只有較大的結構會升級為使用隱藏參數和呼叫端配置的傳回值。
  • C++ 會將它們視為成員函式。 編譯器 一律 會將隱藏參數插入 (呼叫端配置傳回值的指標,) 做為指標之後 this 的第二個參數。 它也會傳回與其傳回值相同的指標。

此參數會強制產生標頭中的介面 C 定義,以假設實作者是使用 C++,而 C 程式碼應該改為明確地使用 C++ ABI。 這表示函式包含傳回值指標的隱藏參數,並傳回該指標,而不是直接結構。

另請參閱

一般 MIDL 命令列語法