Por que códigos de erro são negados?


12

Muitas vezes vejo na negação do código C dos códigos de erro retornados, por exemplo, em return -EINVALvez de return EINVAL. Por que usar negação?

c 

Respostas:


8

Em muitos UNIXen, a convenção para syscalls é que eles retornam o código de erro negado em caso de erro e o valor real em caso de sucesso.

Isso é traduzido no espaço do usuário -1para erros com o código de erro positivo in errnoou o valor real em caso de sucesso.

A necessidade desse propósito duplo do valor de retorno é porque o retorno múltiplo nesse tipo de linguagem é incômodo, pois você teria que recorrer a parâmetros externos para conter um eventual erro.


4

É uma convenção; muitas funções retornam um resultado estritamente positivo no sucesso e um resultado negativo no fracasso. Inicialmente, estava relacionado ao código de retorno do processo Unix. Um sucesso foi indicado por 0.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.