Muy a menudo veo en el código C negación de códigos de error devueltos, por ejemplo, en return -EINVAL
lugar de return EINVAL
. ¿Por qué usó la negación?
En muchos UNIXen, la convención para las llamadas al sistema es que devuelven el código de error negado en caso de error y el valor real en caso de éxito.
Esto se traduce en el lado del espacio del usuario -1
para errores con el código de error positivo errno
o el valor real en caso de éxito.
La necesidad de este doble propósito del valor de retorno se debe a que los retornos múltiples en este tipo de lenguaje son molestos, ya que tendrías que recurrir a pasar parámetros fuera para contener un error eventual.
Es una convención; Muchas funciones devuelven un resultado estrictamente positivo en caso de éxito y un resultado negativo en caso de fracaso. Inicialmente, estaba relacionado con el código de retorno del proceso de Unix. Un éxito fue indicado por 0.