더북(TheBook)

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);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.