Leggere in inglese

Condividi tramite


Opzione /cstruct_out

Questa opzione modifica la definizione C di un'interfaccia COM che restituisce le strutture in modo che corrispondano all'implementazione di ABI fornito da un implementatore C++.

midl /cstruct_out

Opzioni switch

Questa opzione non ha parametri.

Commenti

Alcune definizioni di interfaccia (in particolare quelle in d3d12.idl) contengono __stdcall metodi che restituiscono strutture. Gli ABI C e C++ di MSVC differiscono in base al modo in cui implementano tali funzioni:

  • C li considera come funzioni semplici che accettano un puntatore nascosto this come primo parametro. L'conforme applica un'ottimizzazione di struct di piccole dimensioni che consente di restituire struct di dimensioni inferiori a 8 byte (o maggiori se tutti i valori sono a virgola mobile) nei registri. Vengono promosse solo strutture più grandi per usare un parametro nascosto e un valore restituito allocato dal chiamante.
  • C++ li considera come funzioni membro. Il compilatore esegue sempre questa operazione inserendo un parametro nascosto (un puntatore a un valore restituito allocato dal chiamante) come secondo parametro, dopo il this puntatore. Restituisce anche lo stesso puntatore del valore restituito.

Questa opzione forza la definizione C delle interfacce nell'intestazione risultante a presupporre che l'implementatore usasse C++e che il codice C debba invece usare in modo esplicito l'ABI C++. Ciò implica che la funzione include un parametro nascosto per il puntatore del valore restituito e restituisce tale puntatore anziché direttamente la struttura.

Vedi anche

Sintassi generale della riga di comando MIDL