C의 strtod 계열 오류 처리 분석은 잘못된 문자열을 변환했을 때 glibc는 errno를 0으로, musl은 EINVAL로 남길 수 있음을 보여준다. 숫자로 읽힌 부분이 없는지는 endptr가 입력 시작점과 같은지 확인해야 한다. 표준 C의 언더플로 보고는 구현에 따라 달라 완전한 이식성을 보장하지 않는다. 직접 확인한 POSIX 규격은 범위 오류에 ERANGE를 요구하지만 변환 실패의 EINVAL은 선택 사항이다. 반환값이나 errno 하나에만 의존하지 않는 검사가 필요하다.
Tech로 돌아가기
Tech
C 문자열 실수 변환, errno만으로 오류 판별 못 해
변환 실패는 종료 포인터로 확인하고 범위 오류는 대상 표준과 라이브러리의 보장을 구분해야 합니다.