errno
, _doserrno
, _sys_errlist
ve _sys_nerr
Program yürütme sırasında ayarlanan hata kodlarını tutan genel makrolar ve görüntü için hata kodlarının dize eşdeğerleri.
Sözdizimi
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
Açıklamalar
Hem hem _doserrno
de errno
program başlatma sırasında çalışma zamanı tarafından 0 olarak ayarlanır. errno
, sistem düzeyinde bir çağrıdaki bir hatada ayarlanır. Bunu errno
ayarlayan son çağrının değerini barındırdığından, bu değer başarılı çağrılar tarafından değiştirilebilir. Bir hatada ayarlanan errno
çalışma zamanı kitaplığı çağrıları başarılı olduğunda temizlenemez errno
. Ayarlayabilen bir aramadan hemen önce arayarak _set_errno(0)
her zaman temizleyin errno
ve aramadan hemen sonra denetleyin.
Bir hatada, errno
sistem çağrısı tarafından döndürülen hata koduyla aynı değere ayarlanmış olması gerekmez. G/Ç işlemleri için, _doserrno
kodların işletim sistemi hata kodu eşdeğerlerini depolar errno
. G/Ç olmayan işlemlerin çoğu için değeri _doserrno
ayarlanmamıştır.
Her errno
değer, işlevlerden biri kullanılarak yazdırılabilen veya veya işlevlerinden biri perror
kullanılarak bir dizede depolanabilen bir hata iletisiyle _sys_errlist
strerror
strerror_s
ilişkilendirilir. ve işlevleri, perror
hata bilgilerini işlemek için dizisini ve _sys_nerr
içindeki öğelerin _sys_errlist
sayısını kullanır_sys_errlist
.strerror
ve _sys_nerr
öğesine _sys_errlist
doğrudan erişim, kod güvenliği nedeniyle kullanım dışıdır. Burada gösterildiği gibi genel makrolar yerine daha güvenli, işlevsel sürümleri kullanmanızı öneririz:
Genel makro | İşlevsel eşdeğerler |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , _strerror_s , _wcserror_s , __wcserror_s |
çağrılarak _matherr
ayarlanan errno
kitaplık matematik yordamları. Matematik hatalarını farklı şekilde işlemek için, başvuru açıklamasına _matherr
göre kendi yordamınızı yazın ve olarak adlandırın _matherr
.
Tüm errno
değerler içinde <errno.h>
önceden tanımlanmış sabitlerdir ve UNIX ile uyumludur. Iso C99 standardında yalnızca ERANGE
, EILSEQ
ve EDOM
belirtilir. Tam liste için bkz errno
. sabitler.
Gereksinimler
Genel makro | Gerekli başlık | İsteğe bağlı üst bilgi |
---|---|---|
errno |
<errno.h> veya <stdlib.h> veya <cerrno> <cstdlib> (C++) |
|
_doserrno , _sys_errlist , _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
_doserrno
, _sys_errlist
ve _sys_nerr
makroları Microsoft uzantılarıdır. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Ayrıca bkz.
Genel değişkenler
errno
Sabit
perror
, _wperror
strerror
, _strerror
, _wcserror
, __wcserror
strerror_s
, _strerror_s
, _wcserror_s
, __wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno