Molto spesso vedo la negazione del codice C dei codici di errore restituiti, ad es. return -EINVAL
Anziché return EINVAL
. Perché usare la negazione?
Molto spesso vedo la negazione del codice C dei codici di errore restituiti, ad es. return -EINVAL
Anziché return EINVAL
. Perché usare la negazione?
Risposte:
Su molti UNIXen, la convenzione per syscalls è che restituiscono il codice di errore negato in caso di errore e il valore effettivo in caso di successo.
Questo viene tradotto sul lato dello spazio utente in -1
per errori con il codice di errore positivo in errno
, o il valore effettivo in caso di successo.
La necessità di questo duplice scopo del valore restituito è perché i ritorni multipli in questo tipo di linguaggio sono fastidiosi, poiché dovresti ricorrere al passaggio di parametri out per contenere un eventuale errore.