¿Por qué se niegan los códigos de error?


12

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?

c 

Respuestas:


8

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.


4

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.