Perché i codici di errore vengono annullati?


12

Molto spesso vedo la negazione del codice C dei codici di errore restituiti, ad es. return -EINVALAnziché return EINVAL. Perché usare la negazione?

c 

Risposte:


8

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 -1per 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.


4

È una convenzione; molte funzioni restituiscono un risultato strettamente positivo in caso di successo e un risultato negativo in caso di fallimento. Inizialmente, era correlato al codice di ritorno del processo Unix. Un successo è stato indicato da 0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.