Compartilhar via


Comutador /cstruct_out

Essa opção modifica a definição C de uma interface COM que retorna estruturas para corresponder à ABI que um implementador C++ forneceria.

midl /cstruct_out

Opções de opção

Essa opção não tem parâmetros.

Comentários

Algumas definições de interface (notadamente aquelas em d3d12.idl) contêm __stdcall métodos que retornam estruturas. As ABIs C e C++ do MSVC diferem na forma como implementam essas funções:

  • C os trata como funções simples que tomam um ponteiro oculto this como o primeiro parâmetro. O multiplicador aplica uma otimização de struct pequena que permite que structs menores que 8 bytes (ou maiores se todos os valores forem de ponto flutuante) sejam retornados em registros. Somente estruturas maiores são promovidas para usar um parâmetro oculto e um valor retornado alocado pelo chamador.
  • O C++ os trata como funções membro. O compilador sempre faz isso inserindo um parâmetro oculto (um ponteiro para um valor retornado alocado pelo chamador) como o segundo parâmetro, após o this ponteiro. Ele também retorna o mesmo ponteiro que seu valor retornado.

Essa opção força a definição C de interfaces no cabeçalho resultante a assumir que o implementador estava usando C++, e que o código C deve usar explicitamente a ABI C++. Isso implica que a função inclui um parâmetro oculto para o ponteiro de valor retornado e retorna esse ponteiro em vez da estrutura diretamente.

Confira também

Sintaxe de linha de comando MIDL geral