/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。 這表示函式包含傳回值指標的隱藏參數,並傳回該指標,而不是直接結構。