La norma dice questo circa errno
:
Il valore di errno è zero all'avvio del programma, ma non è mai impostato a zero da qualsiasi funzione di libreria . Il valore di errno può essere impostato su un valore diverso da zero mediante una chiamata di funzione della libreria, indipendentemente dal fatto che vi sia o meno un errore, a condizione che l'uso di errno non sia documentato nella descrizione della funzione in questo standard internazionale.
Il che mi dice che ogni funzione di libreria può avvitare in giro con errno
in alcun modo che vuole, tranne:
- non può impostare
errno
-0
- non può fare quello che Mi piace se lo standard dice esplicitamente altrimenti
Si noti che lo standard suggerisce quanto segue in una nota a piè di pagina:
Pertanto, un programma che utilizza errno
per il controllo degli errori deve impostarlo su zero prima di una chiamata di funzione di libreria, quindi ispezionarlo prima di una successiva chiamata di funzione di libreria. Ovviamente, una funzione di libreria può salvare il valore di errno
in ingresso e quindi impostarlo su zero, purché il valore originale venga ripristinato se il valore di errno
è ancora zero appena prima del ritorno.
Come indicato in altre risposte, è comune anche per le funzioni che non sono nello standard impostare errno
.
fonte
2009-07-12 18:46:41
@Leif, bello che stai lavorando con K & R. Ho appena finito di fare lo stesso per un paio di giorni durante le mie vacanze. (-: –