std::errc
std::errc (POSIX 오류 코드 열거)
표준 라이브러리가 오류 조건을 나타내는 데 쓰는 POSIX 오류 코드(에러번호) 열거 타입이에요. std::error_code·std::error_condition과 결합해 포팅 가능한 오류 보고에 쓰여요. C++11부터 있어요.
출처: cppreference
본문
<system_error> 헤더에 정의돼 있고, POSIX 오류 코드를 나타내는 열거 타입이에요.
enum class errc { ... };
std::errc는 운영체제가 제공하는 오류 코드들을 포팅 가능하게 나타내기 위한 열거 타입이에요. POSIX errno 매크로들이 나타내는 표준 오류 번호들에 대응되는 값들을 가져요. 예를 들어:
operation_not_permitted(EPERM),no_such_file_or_directory(ENOENT),no_such_process(ESRCH),interrupted(EINTR),io_error(EIO),no_such_device_or_address(ENXIO),too_many_open_files(EMFILE),file_too_large(EFBIG),no_space_on_device(ENOSPC),invalid_argument(EINVAL),too_many_links(EMLINK),broken_pipe(EPIPE),result_out_of_range(ERANGE),operation_canceled,timed_out등이 있어요.
포팅 가능성을 위해 std::errc 값들은 (POSIX 외 시스템에서도) 동일한 오류 조건을 동일한 값으로 나타내도록 설계됐어요.
이 열거 타입은 std::make_error_code·std::make_error_condition의 오버로드와 함께 쓰여서 std::error_code/std::error_condition으로 변환될 수 있어요.
#include <system_error>
#include <iostream>
std::error_condition cond = std::errc::no_such_file_or_directory;
std::cout << cond.message() << '\n'; // "No such file or directory"
std::filesystem·std::thread·std::iostream 등이 실패를 std::era(errc) 코드로 보고할 때 이 열거가 기준이 돼요.