Commutateur /cstruct_out

Ce commutateur modifie la définition C d’une interface COM qui retourne des structures pour qu’elles correspondent à l’ABI qu’un implémenteur C++ fournirait.

midl /cstruct_out

Options de commutateur

Ce commutateur n’a aucun paramètre.

Notes

Certaines définitions d’interface (notamment celles de d3d12.idl) contiennent des méthodes qui retournent __stdcall des structures. Les API C et C++ de MSVC diffèrent dans la façon dont ils implémentent ces fonctions :

  • C les traite comme des fonctions simples qui prennent un pointeur masqué this comme premier paramètre. Le conformateur applique une optimisation de struct de petite taille qui permet aux struct inférieurs à 8 octets (ou plus si toutes les valeurs sont à virgule flottante) d’être retournés dans les registres. Seules les structures plus grandes sont promues pour utiliser un paramètre masqué et une valeur de retour allouée par l’appelant.
  • C++ les traite comme des fonctions membres. Le compilateur le fait toujours en insérant un paramètre masqué (un pointeur vers une valeur de retour allouée par l’appelant) comme deuxième paramètre, après le this pointeur. Il retourne également le même pointeur que sa valeur de retour.

Ce commutateur force la définition C des interfaces dans l’en-tête résultant à supposer que l’implémenteur utilise C++, et que le code C doit utiliser explicitement l’ABI C++. Cela implique que la fonction inclut un paramètre masqué pour le pointeur de valeur de retour et retourne ce pointeur directement au lieu de la structure.

Voir aussi

Syntaxe de ligne de commande MIDL générale