Dela via


errno, _doserrno, _sys_errlistoch _sys_nerr

Globala makron som innehåller felkoder som anges under programkörningen och strängmotsvarigheter för felkoderna för visning.

Syntax

#define errno   (*_errno())
#define _doserrno   (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())

Anmärkningar

Både errno och _doserrno anges till 0 av körningen under programstarten. errno anges på ett fel i ett anrop på systemnivå. Eftersom errno innehåller värdet för det senaste anropet som angav det, kan det här värdet ändras genom efterföljande anrop. Körningsbiblioteksanrop som har angetts errno för ett fel raderas errno inte vid lyckade försök. Rensa errno alltid genom att ringa _set_errno(0) direkt före ett samtal som kan ställa in det och kontrollera det direkt efter samtalet.

Vid ett fel errno är inte nödvändigtvis inställt på samma värde som felkoden som returneras av ett systemanrop. För I/O-åtgärder _doserrno lagrar operativsystemets felkodsmotsvarigheter för errno koder. För de flesta icke-I/O-åtgärder anges inte värdet _doserrno för .

Varje errno värde är associerat med ett felmeddelande i _sys_errlist som kan skrivas ut med hjälp av någon av perror funktionerna eller lagras i en sträng med hjälp av någon av strerror funktionerna eller strerror_s . Funktionerna perror och strerror använder matrisen _sys_errlist och _sys_nerr– antalet element i _sys_errlist– för att bearbeta felinformation. Direkt åtkomst till _sys_errlist och _sys_nerr är inaktuell av kodsäkerhetsskäl. Vi rekommenderar att du använder de säkrare och mer funktionella versionerna i stället för de globala makrona, som du ser här:

Globalt makro Funktionella motsvarigheter
_doserrno _get_doserrno, _set_doserrno
errno _get_errno, _set_errno
_sys_errlist, _sys_nerr strerror_s, _strerror_s, , _wcserror_s__wcserror_s

Biblioteksmatematikrutiner som anges errno genom att anropa _matherr. Om du vill hantera matematiska fel på olika sätt skriver du din egen rutin enligt _matherr referensbeskrivningen och namnger den _matherr.

Alla errno värden är fördefinierade konstanter i <errno.h>och är UNIX-kompatibla. Endast ERANGE, EILSEQoch EDOM anges i STANDARDEN ISO C99. En fullständig lista finns i errno konstanter.

Kravspecifikation

Globalt makro Obligatoriskt huvud Valfritt sidhuvud
errno <errno.h> eller <stdlib.h>, <cerrno> eller <cstdlib> (C++)
_doserrno, _sys_errlist_sys_nerr <stdlib.h>, <cstdlib> (C++) <errno.h>, <cerrno> (C++)

Makrona _doserrno, _sys_errlistoch _sys_nerr är Microsoft-tillägg. Mer kompatibilitetsinformation finns i Kompatibilitet.

Se även

Globala variabler
errno Konstanter
perror, _wperror
strerror, _strerror, , _wcserror__wcserror
strerror_s, _strerror_s, , _wcserror_s__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno