`EXIT_SUCCESS`, `EXIT_FAILURE` 매크로

EXIT_SUCCESS, EXIT_FAILURE 매크로 (EXIT_SUCCESS, EXIT_FAILURE)

프로그램이 정상적으로 끝났는지, 아니면 뭔가 잘못돼서 끝났는지 호스트 환경에 알려 줘야 할 때가 있죠. 그 신호를 보낼 때 쓰는 관례적인 상수가 바로 EXIT_SUCCESSEXIT_FAILURE예요. 이름 그대로 '성공했을 때'와 '실패했을 때'를 뜻하고, 직접 숫자를 외우기보다 이 매크로를 쓰는 게 코드 의도도 분명하고 표준에도 안전하죠.

출처: cppreference

본문

매크로 정의

<stdlib.h>에 정의돼 있어요.

#define EXIT_SUCCESS /*implementation defined*/
#define EXIT_FAILURE /*implementation defined*/

설명 (Explanation)

EXIT_SUCCESSEXIT_FAILURE는 정수 상수 표현식(integral constant expression)으로 확장돼요. 이 값들은 exit 함수의 인자, 그리고 그 결과로 main 함수에서 반환하는 값으로 쓰여 프로그램의 실행 상태를 나타내요.

상수 설명
EXIT_SUCCESS 프로그램의 성공적인 실행
EXIT_FAILURE 프로그램의 실패한 실행

주의할 점 (Notes)

EXIT_SUCCESS와 값 0은 둘 다 성공적인 실행 상태를 나타내요(exit 참고). 다만 EXIT_SUCCESS가 반드시 0과 같아야 하는 건 아니에요.

예제 (Example)

파일을 열다 실패하면 EXIT_FAILURE로 끝내고, 정상 처리 후에는 EXIT_SUCCESS로 마무리하는 전형적인 패턴이에요.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE* fp = fopen("data.txt", "r");
    if (fp == NULL)
    {
       fprintf(stderr, "fopen() failed in file %s at line #%d", __FILE__, __LINE__);
       exit(EXIT_FAILURE);
    }

    /* Normal processing continues here. */
    fclose(fp);
    printf("Normal Return\n");

    return EXIT_SUCCESS;
}

출력:

fopen() failed in file main.cpp at line #9

같이 보기 (See also)

  • exit — 정상 종료 실행
  • abort — 비정상 종료(정리 없이)