errno
, _doserrno
, _sys_errlist
i _sys_nerr
Globalne makra przechowujące kody błędów ustawione podczas wykonywania programu i odpowiedniki ciągów kodów błędów do wyświetlenia.
Składnia
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Uwagi
Obie errno
wartości i _doserrno
są ustawione na wartość 0 przez środowisko uruchomieniowe podczas uruchamiania programu. errno
parametr jest ustawiany na błędzie w wywołaniu na poziomie systemu. Ponieważ errno
przechowuje wartość ostatniego wywołania, które je ustawiło, ta wartość może zostać zmieniona przez pomyślne wywołania. Wywołania biblioteki czasu wykonywania ustawione errno
w przypadku błędu nie są jasne errno
w przypadku powodzenia. Zawsze wyczyść errno
, wywołując bezpośrednio przed wywołaniem _set_errno(0)
, które może go ustawić, i sprawdź je natychmiast po wywołaniu.
W przypadku błędu errno
nie musi być ustawiona ta sama wartość co kod błędu zwrócony przez wywołanie systemowe. W przypadku operacji _doserrno
we/wy przechowuje odpowiedniki kodów errno
błędów systemu operacyjnego. W przypadku większości operacji innych niż we/wy wartość nie jest ustawiona _doserrno
.
Każda errno
wartość jest skojarzona z komunikatem o błędzie, który _sys_errlist
można wydrukować przy użyciu jednej z perror
funkcji lub przechowywanych w ciągu przy użyciu jednej z strerror
funkcji lub strerror_s
. Funkcje perror
i strerror
używają _sys_errlist
tablicy i _sys_nerr
— liczby elementów w _sys_errlist
elemecie — do przetwarzania informacji o błędzie. Bezpośredni dostęp do _sys_errlist
i _sys_nerr
jest przestarzały ze względów bezpieczeństwa kodu. Zalecamy używanie bezpieczniejszych wersji funkcjonalnych zamiast makr globalnych, jak pokazano poniżej:
Makro globalne | Odpowiedniki funkcjonalne |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , , _strerror_s , , _wcserror_s __wcserror_s |
Procedury matematyczne biblioteki ustawione errno
przez wywołanie metody _matherr
. Aby obsługiwać błędy matematyczne inaczej, napisz własną procedurę zgodnie z opisem odwołania i nadaj _matherr
mu _matherr
nazwę .
Wszystkie errno
wartości są wstępnie zdefiniowanymi stałymi w systemie <errno.h>
i są zgodne z systemem UNIX. Tylko ERANGE
, EILSEQ
i EDOM
są określone w standardzie ISO C99. Aby uzyskać pełną listę, zobacz errno
stałe.
Wymagania
Makro globalne | Wymagany nagłówek | Opcjonalny nagłówek |
---|---|---|
errno |
<errno.h> <cerrno> lub <stdlib.h> <cstdlib> (C++) |
|
_doserrno , , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
Makra _doserrno
, _sys_errlist
i _sys_nerr
to rozszerzenia firmy Microsoft. Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
Zmienne globalne
errno
Stałe
perror
, _wperror
strerror
, , _strerror
, , _wcserror
__wcserror
strerror_s
, , _strerror_s
, , _wcserror_s
__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno