Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C와 C++에서 main() 함수는 무엇을 반환해야 할까?

main() 반환 값의 의미

main() 함수의 반환 값은 프로그램이 어떤 방식으로 종료되었는지를 운영체제나 호출 환경에 알려주는 역할을 합니다.

프로그램이 정상적으로 실행을 마쳤다면 0을 반환합니다. 반대로 오류, 잘못된 입력, 세그먼테이션 폴트(segmentation fault) 등 비정상적인 종료가 발생했을 때는 일반적으로 0이 아닌 값(non-zero)을 반환합니다.

다만 0이 아닌 코드들이 구체적으로 어떻게 해석되어야 하는지에 대한 표준 규격은 존재하지 않습니다. 각 환경마다 해석 방식이 다를 수 있다는 점을 기억해 두는 것이 좋습니다.

자신만의 상태 코드 정의하기

개발자가 직접 상태 코드를 정의하고, 이를 활용해 프로그램 내에서 발생할 수 있는 다양한 실패 유형을 구분하여 표현할 수도 있습니다. 예를 들어 파일 열기 실패는 1, 메모리 부족은 2처럼 의미를 부여하면 디버깅과 자동화 스크립트 작성에 도움이 됩니다.

GCC가 권장하는 방식: EXIT_SUCCESS와 EXIT_FAILURE

GCC는 종료 신호를 보낼 때 stdlib.h(C++) 헤더에 정의된 EXIT_SUCCESS 또는 EXIT_FAILURE 매크로를 사용할 것을 권장합니다.

  • EXIT_SUCCESS: 프로그램이 성공적으로 종료되었음을 나타냅니다(일반적으로 0).
  • EXIT_FAILURE: 프로그램이 비정상적으로 종료되었음을 나타냅니다(일반적으로 1).

매직 넘버 대신 이러한 매크로를 사용하면 코드의 가독성과 이식성이 크게 향상됩니다.

C++에서의 특별한 규칙

C++에서는 int main() 함수 끝에 return 문을 생략할 수 있습니다. 이 경우 컴파일러가 자동으로 0을 반환하도록 처리하며, 이는 C++ 표준이 보장하는 동작입니다. 즉, main()만큼은 명시적인 return 없이도 정상 종료를 의미하게 됩니다.