errno
, _doserrno
, _sys_errlist
및 _sys_nerr
프로그램을 실행하는 동안 설정된 오류 코드를 보유한 전역 매크로와 표시용 오류 코드의 문자열에 해당하는 값입니다.
구문
#define errno (*_errno())
#define _doserrno (*__doserrno())
#define _sys_errlist (__sys_errlist())
#define _sys_nerr (*__sys_nerr())
설명
errno
와 _doserrno
는 모두 프로그램을 시작하는 동안 런타임에 0으로 설정됩니다. errno
는 오류가 발생한 시스템 수준 호출에서 설정됩니다. errno
에 설정된 마지막 호출에 대한 값이 있으므로 이후 호출에 의해 이 값이 변경될 수도 있습니다. 오류에 설정된 errno
런타임 라이브러리 호출은 성공 시 명확하지 errno
않습니다. 설정할 수 있는 호출 바로 전에 errno
를 호출하여 항상 _set_errno(0)
를 지우고 호출 후 바로 확인하세요.
오류 errno
시 시스템 호출에서 반환된 오류 코드와 동일한 값으로 반드시 설정되는 것은 아닙니다. I/O 작업의 경우 _doserrno
는 errno
코드에 대등한 운영 체제 오류 코드를 저장합니다. 대부분의 비 I/O 작업의 경우 값 _doserrno
이 설정되지 않습니다.
각 errno
값은 함수 중 하나를 사용하여 인쇄하거나 또는 strerror_s
함수 중 perror
하나를 strerror
사용하여 문자열에 저장할 수 있는 오류 메시지 _sys_errlist
와 연결됩니다. perror
및 strerror
함수에서 _sys_errlist
배열 및 _sys_nerr
(_sys_errlist
에서 요소 수)을 사용하여 오류 정보를 처리합니다. _sys_errlist
및 _sys_nerr
에 대한 직접 액세스는 코드 보안상의 이유로 사용되지 않습니다. 다음과 같이 전역 매크로 대신 더욱 안전한 기능 버전을 사용하는 것이 좋습니다.
전역 매크로 | 함수 등가물 |
---|---|
_doserrno |
_get_doserrno , _set_doserrno |
errno |
_get_errno , _set_errno |
_sys_errlist , _sys_nerr |
strerror_s , _strerror_s , _wcserror_s __wcserror_s |
를 호출_matherr
하여 설정한 errno
라이브러리 수학 루틴입니다. 수학 오류를 다르게 처리하려면 _matherr
참조 설명에 따라 고유한 루틴을 작성하고 이름을 _matherr
로 지정합니다.
모든 errno
값은 미리 정의된 상수이며 <errno.h>
UNIX와 호환됩니다. ERANGE
, EILSEQ
및 EDOM
만 ISO C99 표준에 지정되어 있습니다. 전체 목록은 errno
상수입니다.
요구 사항
전역 매크로 | 필수 헤더 | 선택적 헤더 |
---|---|---|
errno |
<errno.h> 또는 <stdlib.h> , <cerrno> 또는 <cstdlib> (C++) |
|
_doserrno , , _sys_errlist _sys_nerr |
<stdlib.h> , <cstdlib> (C++) |
<errno.h> , <cerrno> (C++) |
_doserrno
, _sys_errlist
및 _sys_nerr
매크로는 Microsoft 확장입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.
참고 항목
전역 변수
errno
상수
perror
, _wperror
strerror
, _strerror
, _wcserror
__wcserror
strerror_s
, _strerror_s
, _wcserror_s
__wcserror_s
_get_doserrno
_set_doserrno
_get_errno
_set_errno