Sdílet prostřednictvím


errno, _doserrno, _sys_errlista _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_nerrpoč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 systém UNIX kompatibilní. Pouze ERANGE, EILSEQa 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 _doserrnomakra 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