8.1.3 오류 검사
C 라이브러리 함수는 실행에 실패(failure)했다는 사실을 특별한 리턴 값으로 표현한다. 어떤 값을 실패로 표현할지는 함수마다 다르다. 일반적으로 함수 매뉴얼에 있는 관례를 따르는 것이 좋다. 표 8-2는 다양한 경우를 개략적으로 정리한 것이다. 크게 세 가지로 나눌 수 있다. 오류를 표현하는 특수값, 성공적인 실행을 표현하는 특수값, 실행에 성공했을 때는 양의 카운터를 리턴하고 실패했을 때는 음의 값을 리턴하는 함수가 있다.
▼ 표 8-2 C 라이브러리 함수의 오류 리턴 방법. 함수마다 정의된 errno 매크로의 값으로 특수한 오류 상태를 표현할 수도 있다.
오류 리턴 |
테스트 |
대표적인 경우 |
예 |
0 |
!value |
나머지 값은 정상 |
fopen |
특수 오류 코드 |
value == code |
나머지 값은 정상 |
puts, clock, mktime, strtod, fclose |
0이 아닌 값 |
value |
다른 경우에는 필요 없는 값 |
fgetpos, fsetpos |
특수 성공 코드 |
value != code |
실패 조건을 명시적으로 구분 |
thrd_create |
음의 값 |
value < 0 |
양의 값(=출력한 문자 개수) |
printf |
오류 검사 코드는 흔히 다음과 같이 작성한다.
if (puts("hello world") == EOF) { perror("can't output to terminal:"); exit(EXIT_FAILURE); }