errno
, _doserrno
, _sys_errlist
a _sys_nerr
Globální makra, která obsahují kódy chyb nastavené během provádění programu, a řetězcové ekvivalenty kódů chyb pro zobrazení.
Syntaxe
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Poznámky
Obě errno
a _doserrno
jsou nastaveny na hodnotu 0 modulem runtime během spouštění programu. errno
je nastaven na chybu při volání na úrovni systému. Protože errno
obsahuje hodnotu posledního volání, které ji nastavil, může být tato hodnota změněna úspěšnými voláními. Volání knihovny za běhu, která jsou nastavená errno
na chybu, se při úspěchu nejasní errno
. Vždy vymažte errno
voláním _set_errno(0)
bezprostředně před voláním, které ho může nastavit, a zkontrolujte ho hned po volání.
U chyby errno
nemusí být nutně nastavená stejná hodnota jako kód chyby vrácený systémovým voláním. V případě vstupně-výstupních operací _doserrno
ukládá ekvivalenty kódu chyby operačního errno
systému. U většiny nečinných vstupně-výstupních operací není hodnota _doserrno
nastavená.
Každá errno
hodnota je přidružena k chybové zprávě _sys_errlist
, která může být vytištěna pomocí jedné z perror
funkcí nebo uložena v řetězci pomocí některé z strerror
těchto funkcí nebo strerror_s
funkcí. Funkce perror
používají _sys_errlist
pole a _sys_nerr
počet prvků v _sys_errlist
) ke zpracování informací strerror
o chybách. Přímý přístup k _sys_errlist
kódu a _sys_nerr
je zastaralý z důvodů zabezpečení kódu. Doporučujeme místo globálních maker používat bezpečnější funkční verze, jak je znázorněno tady:
Globální makro | Funkční ekvivalenty |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , _strerror_s , , _wcserror_s __wcserror_s |
Matematické rutiny knihovny nastavené errno
voláním _matherr
. Chcete-li zpracovávat matematické chyby jinak, napište vlastní rutinu _matherr
podle popisu odkazu a pojmenujte ji _matherr
.
Všechny errno
hodnoty jsou předdefinované konstanty v <errno.h>
a jsou kompatibilní se systémem UNIX. Pouze ERANGE
, EILSEQ
a EDOM
jsou uvedeny ve standardu ISO C99. Úplný seznam najdete v tématu errno
konstanty.
Požadavky
Globální makro | Požadovaný hlavičkový soubor | Volitelné záhlaví |
---|---|---|
errno |
<errno.h> nebo <stdlib.h> <cstdlib> ( <cerrno> C++) |
|
_doserrno , , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
_sys_errlist
_sys_nerr
A _doserrno
makra jsou rozšíření Microsoftu. Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Globální proměnné
errno
konstanty
perror
, _wperror
strerror
, _strerror
, , _wcserror
__wcserror
strerror_s
, _strerror_s
, , _wcserror_s
__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno