Namespaces
Variants

errno

From cppreference.net
헤더 파일에 정의됨 <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 에 출력
(함수)
주어진 오류 코드에 대한 텍스트 설명을 반환
(함수)