Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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é
thiscomme 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
thispointeur. 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.