errno
|
헤더 파일에 정의됨
<cerrno>
|
||
|
#define errno /* implementation-defined */
|
||
errno 는 오류 표시를 위해 사용되는 전처리기 매크로입니다. 이것은 static (until C++11) thread-local (since C++11) 타입의 수정 가능한 lvalue로 확장됩니다. int .
여러 표준 라이브러리 함수들은 양의 정수를
errno
에 기록하여 오류를 나타냅니다. 일반적으로
errno
의 값은
<cerrno>
에 나열된 오류 코드 중 하나로 설정되며, 이는
E
문자로 시작하고 대문자나 숫자가 뒤따르는 매크로 상수 형태입니다.
errno 의 값은 프로그램 시작 시 0 이며, 라이브러리 함수는 오류 발생 여부와 관계없이 errno 에 양의 정수를 기록할 수 있지만, 라이브러리 함수는 절대 0 을 errno 에 저장하지 않습니다.
예제
#include <cerrno> #include <clocale> #include <cmath> #include <cstring> #include <iostream> int main() { const double not_a_number = std::log(-1.0); std::cout << not_a_number << '\n'; if (errno == EDOM) { std::cout << "log(-1) failed: " << std::strerror(errno) << '\n'; std::setlocale(LC_MESSAGES, "de_DE.utf8"); std::cout << "Or, in German, " << std::strerror(errno) << '\n'; } }
가능한 출력:
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 310 | C++98 |
errno
가 매크로인지
외부 링크를 가진 식별자인지 불분명했음 |
errno
는 반드시
매크로여야 함 |
참고 항목
|
표준 POSIX 호환 오류 조건을 위한 매크로
(매크로 상수) |
|
|
현재 오류에 해당하는 문자열을
stderr
에 출력
(함수) |
|
|
주어진 오류 코드에 대한 텍스트 설명을 반환
(함수) |
|
|
C documentation
for
errno
|
|