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