errno, _doserrno, _sys_errlistve _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_nerriçindeki öğelerin _sys_errlistsayı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 _matherrayarlanan 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, EILSEQve 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_errlistve _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