Udostępnij za pośrednictwem


errno, _doserrno, _sys_errlisti _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_errlistelemecie — 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 _matherrnazwę .

Wszystkie errno wartości są wstępnie zdefiniowanymi stałymi w systemie <errno.h>i są zgodne z systemem UNIX. Tylko ERANGE, EILSEQi 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_errlisti _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