Comutador /char
A opção /char ajuda a garantir que o compilador MIDL e o compilador C operem juntos corretamente para todos os tipos char e small .
midl /char { signed | unsigned | ascii7 }
Opções de Alternância
-
Assinado
-
Especifica que o tipo de compilador C padrão para char está assinado. Todas as ocorrências de char não acompanhadas de uma especificação de sinal são geradas como caractere sem sinal.
-
Unsigned
-
Especifica que o tipo de compilador C padrão para char não está assinado. Todos os usos de pequenos não acompanhados por uma especificação de sinal são gerados como pequenos assinados.
-
ascii7
-
Especifica que todos os valores char devem ser passados para os arquivos gerados sem um sinal específico palavra-chave. Todos os usos de pequenos não acompanhados por uma especificação de sinal são gerados como pequenos.
Comentários
Por definição, o caractere MIDL não está assinado. "Small" é definido em termos de char (#define char pequeno) e MIDL small é assinado.
A opção /char direciona o compilador MIDL para especificar declarações explícitas assinadas ou não assinadas nos arquivos gerados quando a declaração de sinal do compilador C entra em conflito com o padrão MIDL para esse tipo.
Lembre-se de que o compilador MIDL gera os stubs como código-fonte C, que você deve compilar como parte de seus programas cliente e servidor. Alguns compiladores usam um caractere assinado em todos os lugares em que os dados char são especificados no código-fonte. O código-fonte stub gerado pelo compilador MIDL trata todos os dados char como caracteres sem sinal. Se o compilador MIDL simplesmente gerou todos os dados char no arquivo IDL como dados char nos stubs, compiladores que usam um caractere assinado para dados char causariam um conflito no código-fonte stub.
A finalidade da opção de linha de comando /char é resolve esses possíveis conflitos. Ele preserva todos os dados especificados como char no arquivo IDL como caractere sem sinal no código-fonte stub. Ele também mantém pequenos dados conforme assinado.
A tabela a seguir resume os tipos gerados.
opção midl /char | Tipo de caractere gerado | Tipo pequeno gerado |
---|---|---|
midl /char assinado | unsigned char | small |
midl /char sem sinal | char | assinado pequeno |
midl /char ascii7 | char | small |
A opção assinada /char indica que o char do compilador C e os tipos pequenos são assinados. Para corresponder ao padrão MIDL para char, o compilador MIDL deve converter todos os usos de char não acompanhados de uma especificação de sinal para char sem sinal. O tipo pequeno não é modificado porque esse padrão do compilador C corresponde ao padrão MIDL para pequeno.
A opção /char sem sinal indica que o tipo char do compilador C não está assinado. O compilador MIDL converte todos os usos de pequenos não acompanhados por uma especificação de sinal para pequenoassinado.
A opção ascii7 indica que nenhuma especificação de sinal explícita é adicionada aos tipos char . O tipo pequeno é gerado como pequeno.
Para evitar confusão, você deve usar especificações de sinal explícitas para tipos char e pequenos sempre que possível no arquivo IDL. Observe que o uso de tipos de caracteres assinados explicitamente no arquivo IDL não é compatível com a IDL do DCE. Portanto, esse recurso não está disponível quando você compila com a opção MIDL /osf .
Para obter mais informações relacionadas a /char, consulte small.
Exemplos
midl /char signed filename.idl
midl /char unsigned filename.idl
midl /char ascii7 filename.idl
Confira também