`EXIT_SUCCESS`, `EXIT_FAILURE` 매크로
EXIT_SUCCESS, EXIT_FAILURE 매크로 (EXIT_SUCCESS, EXIT_FAILURE)
프로그램이 정상적으로 끝났는지, 아니면 뭔가 잘못돼서 끝났는지 호스트 환경에 알려 줘야 할 때가 있죠. 그 신호를 보낼 때 쓰는 관례적인 상수가 바로 EXIT_SUCCESS와 EXIT_FAILURE예요. 이름 그대로 '성공했을 때'와 '실패했을 때'를 뜻하고, 직접 숫자를 외우기보다 이 매크로를 쓰는 게 코드 의도도 분명하고 표준에도 안전하죠.
출처: cppreference
본문
매크로 정의
<stdlib.h>에 정의돼 있어요.
#define EXIT_SUCCESS /*implementation defined*/
#define EXIT_FAILURE /*implementation defined*/
설명 (Explanation)
EXIT_SUCCESS와 EXIT_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— 비정상 종료(정리 없이)