errno
, _doserrno
, _sys_errlist
e _sys_nerr
Macro globali che contengono i codici di errore impostati durante l'esecuzione del programma e stringhe equivalenti dei codici di errore per la visualizzazione.
Sintassi
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Osservazioni:
Entrambe le parole chiave errno
e _doserrno
vengono impostate su 0 dal runtime durante l'avvio del programma. errno
è impostato su un errore in una chiamata a livello di sistema. Poiché errno
contiene il valore dell'ultima chiamata che l'ha impostata, questo valore può essere modificato dalle chiamate successive. Le chiamate alla libreria di runtime impostate errno
in caso di errore non vengono cancellate errno
in caso di esito positivo. Cancellare sempre errno
chiamando _set_errno(0)
immediatamente prima di una chiamata che potrebbe impostarla e verificarla immediatamente dopo la chiamata.
In caso di errore, errno
non è necessariamente impostato sullo stesso valore del codice di errore restituito da una chiamata di sistema. Per le operazioni di I/O, _doserrno
archivia i codici di errore equivalenti del sistema operativo dei codici errno
. Per la maggior parte delle operazioni non di I/O, il valore di _doserrno
non è impostato.
Ogni errno
valore è associato a un messaggio di errore in _sys_errlist
che può essere stampato usando una delle perror
funzioni o archiviato in una stringa usando una delle strerror
funzioni o strerror_s
. Le funzioni perror
e strerror
usano la matrice _sys_errlist
e _sys_nerr
, il numero di elementi in _sys_errlist
, per elaborare le informazioni sugli errori. Per motivi di sicurezza del codice, l'accesso diretto a _sys_errlist
e _sys_nerr
è deprecato. È consigliabile usare le versioni funzionali più sicure anziché le macro globali, come illustrato di seguito:
Macro globale | Equivalenti funzionali |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , _strerror_s , _wcserror_s __wcserror_s |
Routine matematiche della libreria impostate errno
chiamando _matherr
. Per gestire gli errori matematici in modo diverso, scrivere una routine in base alla descrizione di riferimento di _matherr
e assegnare ad essa il nome _matherr
.
Tutti i errno
valori sono costanti predefinite in <errno.h>
e sono compatibili con UNIX. Solo ERANGE
, EILSEQ
e EDOM
sono specificate nello standard ISO C99. Per un elenco completo, vedere errno
costanti.
Requisiti
Macro globale | Intestazione obbligatoria | Intestazione facoltativa |
---|---|---|
errno |
<errno.h> o <stdlib.h> o <cerrno> <cstdlib> (C++) |
|
_doserrno , _sys_errlist , _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
Le macro _doserrno
, _sys_errlist
e _sys_nerr
sono estensioni Microsoft. Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Vedi anche
Variabili globali
errno
Costanti
perror
, _wperror
strerror
, _strerror
, _wcserror
__wcserror
strerror_s
, _strerror_s
, _wcserror_s
__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno