errno
|
헤더 파일에 정의됨
<errno.h>
|
||
|
#define errno /* implementation-defined */
|
||
errno
는 (아래 참고 사항 참조)
스레드-로컬
(C11부터)
int
타입의 수정 가능한 lvalue로 확장되는 전처리기 매크로입니다. 여러 표준 라이브러리 함수들은
errno
에 양의 정수 값을 기록하여 오류를 나타냅니다. 일반적으로
errno
의 값은
<errno.h>
에
E
로 시작하고 대문자 또는 숫자가 뒤따르는 매크로 상수로 나열된 오류 코드 중 하나로 설정됩니다.
errno
의 값은
프로그램 시작 시
0
이며, 라이브러리 함수는 오류 발생 여부와 관계없이
errno
에 양의 정수를 기록할 수 있지만,
라이브러리 함수는 절대
0
을
errno
에 저장하지 않습니다.
라이브러리 함수
perror
와
strerror
는 현재
errno
값에 해당하는 오류 조건에 대한 텍스트 설명을 얻는 데 사용할 수 있습니다.
참고: C11 이전까지 C 표준은 모순된 요구사항을 가지고 있었는데,
errno
가 매크로라고 명시하면서
동시에
"
errno
가 매크로인지 외부 연결을 가진 식별자인지는 명시되지 않음"이라고 규정했습니다. C11에서는 이를 수정하여 매크로로 정의되도록 요구합니다 (WG14
N1338
도 참조하십시오).
예제
#include <errno.h> #include <math.h> #include <stdio.h> void show_errno(void) { const char *err_info = "unknown error"; switch (errno) { case EDOM: err_info = "domain error"; break; case EILSEQ: err_info = "illegal sequence"; break; case ERANGE: err_info = "pole or range error"; break; case 0: err_info = "no error"; } fputs(err_info, stdout); puts(" occurred"); } int main(void) { fputs("MATH_ERRNO is ", stdout); puts(math_errhandling & MATH_ERRNO ? "set" : "not set"); errno = 0; (void)(1.0 / 0.0); show_errno(); errno = 0; (void)acos(+1.1); show_errno(); errno = 0; (void)log(0.0); show_errno(); errno = 0; (void)sin(0.0); show_errno(); }
가능한 출력:
MATH_ERRNO is set no error occurred domain error occurred pole or range error occurred no error occurred
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.5 Errors <errno.h> (p: TBD)
-
- K.3.1.3 Use of errno (p: TBD)
-
- K.3.2 Errors <errno.h> (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.5 Errors <errno.h> (p: TBD)
-
- K.3.1.3 Use of errno (p: TBD)
-
- K.3.2 Errors <errno.h> (p: TBD)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.5 Errors <errno.h> (p: 205)
-
- K.3.1.3 Use of errno (p: 584)
-
- K.3.2 Errors <errno.h> (p: 585)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.5 Errors <errno.h> (p: 186)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.1.3 오류 <errno.h>
참고 항목
|
표준 POSIX 호환 오류 조건을 위한 매크로
(매크로 상수) |
|
|
현재 오류에 해당하는 문자열을
stderr
에 출력
(함수) |
|
|
(C11)
(C11)
|
주어진 오류 코드에 대한 텍스트 설명을 반환
(함수) |
|
(C99)
(C99)
(C99)
|
일반 수학 함수에서 사용하는 오류 처리 메커니즘을 정의
(매크로 상수) |
|
C++ documentation
for
errno
|
|