Condividi tramite


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