errno
, _doserrno
, _sys_errlist
und _sys_nerr
Globale Makros, die während der Programmausführung festgelegte Fehlercodes und mit den Fehlercodes identische Zeichenfolgen zur Anzeige enthalten.
Syntax
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Hinweise
Sowohl errno
als auch _doserrno
werden von der Laufzeit während des Programmstarts auf 0 festgelegt. errno
wird bei einem Fehler bei einem Aufruf auf Systemebene festgelegt. Weil errno
den Wert für den letzten Aufruf enthält, der ihn festlegte, wird dieser Wert möglicherweise durch darauffolgende Aufrufe geändert. Laufzeitbibliothekaufrufe, die für einen Fehler festgelegt wurden errno
, werden bei Erfolg nicht gelöscht errno
. Löschen Sie errno
immer sofort vor einem Aufruf, der es möglicherweise festlegt, durch Aufrufen von _set_errno(0)
, und überprüfen Sie es sofort nach dem Aufruf.
Bei einem Fehler errno
wird nicht unbedingt derselbe Wert wie der von einem Systemaufruf zurückgegebene Fehlercode festgelegt. Bei E/A-Vorgängen speichert _doserrno
die Betriebssystem-Fehlercodeäquivalente von errno
-Codes. Bei den meisten Nicht-E/A-Vorgängen wird der Wert nicht _doserrno
festgelegt.
Jeder errno
Wert ist einer Fehlermeldung zugeordnet, in _sys_errlist
der mithilfe einer der perror
Funktionen gedruckt oder in einer Zeichenfolge mithilfe einer der strerror
Funktionen strerror_s
oder Funktionen gespeichert werden kann. perror
und strerror
verwenden das Array _sys_errlist
und _sys_nerr
– die Anzahl von Elementen in _sys_errlist
–, um Fehlerinformationen zu verarbeiten. Der direkte Zugriff auf _sys_errlist
und _sys_nerr
ist aus Codesicherheitsgründen veraltet. Es wird empfohlen, wie hier gezeigt anstatt der globalen Makros die sichereren, funktionsbereiten Versionen zu verwenden:
Globales Makro | Funktionale Entsprechungen |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , , _strerror_s _wcserror_s __wcserror_s |
Mathematische Bibliotheksroutinen, die durch Aufrufen _matherr
festgelegt werdenerrno
. Um Mathematikfehler anders zu handhaben, schreiben Sie Ihre eigene Routine gemäß der _matherr
-Verweisbeschreibung und nennen sie _matherr
.
Alle errno
Werte sind vordefinierte Konstanten in <errno.h>
, und sind UNIX-kompatibel. Nur ERANGE
, EILSEQ
und EDOM
werden im Standard ISO C99 festgelegt. Eine vollständige Liste finden Sie unter errno
Konstanten.
Anforderungen
Globales Makro | Erforderlicher Header | Optionaler Header |
---|---|---|
errno |
<errno.h> <cerrno> <cstdlib> oder <stdlib.h> (C++) |
|
_doserrno , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
Die Makros _doserrno
, _sys_errlist
und _sys_nerr
sind Microsoft-Erweiterungen. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Siehe auch
Globale Variablen
errno
Konstanten
perror
, _wperror
strerror
, , _strerror
_wcserror
__wcserror
strerror_s
, , _strerror_s
_wcserror_s
__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno