Muy a menudo veo en el código C negación de códigos de error devueltos, por ejemplo, en return -EINVALlugar 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 -EINVALlugar 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 -1para errores con el código de error positivo errnoo 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.