더북(TheBook)

TAKEAWAY 7.6 main의 리턴 값으로 EXIT_SUCCESSEXIT_FAILURE를 사용한다.

main에서 return문을 지정하지 않을 때의 의미는 일반 함수와 다르다.

TAKEAWAY 7.7 main 함수에서 {} 블록의 끝에 도달한 것은 EXIT_SUCCESS를 리턴하는 것과 같다.

개인적으로 이 방식이 썩 좋다고 생각하지는 않는다. 프로그램에 대한 설명이 복잡해질 뿐이기 때문이다.

라이브러리 함수인 exitmain과 특수한 관계가 있다. 이름에서 풍기듯이 exit를 호출하면 프로그램을 종료한다. 이 함수의 프로토타입은 다음과 같다.

_Noreturn void exit(int status);

이 함수는 main에서 return을 실행할 때처럼 프로그램을 종료시킨다. status 매개변수는 main에서 사용한 return 표현식과 똑같은 역할을 한다.

TAKEAWAY 7.8 exit(s)를 호출하는 것은 main에서 return s를 실행하는 것과 같다.

exit 함수의 프로토타입에서 리턴 타입이 void라는 점이 특이하다. return문처럼 exit도 절대 실패할 일이 없다.

TAKEAWAY 7.9 exit는 실행에 실패하지도 호출자에게 리턴하지도 않는다.

호출자에게 리턴하지 않는다는 사실은 _Noreturn이란 키워드로 명시했다. 이 키워드는 exit와 같은 특수한 함수에만 지정할 수 있다. 이 함수를 보기 좋게 만든 버전인 noreturn 매크로도 있으며, 이는 stdnoreturn.h 헤더 파일에 정의돼 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.