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?
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?
Respuestas:
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.