더북(TheBook)

7.2 main은 특별하다

지금까지 보면서 main은 뭔가 특별하다고 느꼈을 것이다. 이 함수는 프로그램 전체의 진입점이라는 특수한 역할을 담당한다. main 함수의 프로토타입은 C 표준으로 정해져 있다. 물론 구현 코드는 프로그래머 마음대로 작성할 수 있다. main은 런타임 시스템과 애플리케이션 사이를 연결하는 역할을 하고 있는 만큼 몇 가지 특수한 규칙을 따라야 한다.

첫째, 다양한 요구를 수용하기 위한 프로토타입이 여러 개 있는데, 그 중 하나는 반드시 구현해야 하며 다음 두 가지는 반드시 지원해야 한다.

int main(void);
int main(int argc, char* argv[argc+1]);

C 플랫폼이라면 다음과 같은 인터페이스도 추가로 지원할 수 있다. 흔히 다음 두 가지 형태로 제공된다.

일부 임베디드 시스템에서 main은 런타임 시스템으로 아무 값도 리턴하지 않는다. 따라서 리턴 타입을 void로 지정한다.

세 번째 매개변수를 통해 ‘환경(environment)’에 접근하는 플랫폼이 많다.

이 방식을 제외한 다른 형태의 프로토타입은 사용하지 않는 것이 좋다. 이식성이 뛰어난 코드를 작성하고 싶다면 처음 나온 두 가지만 사용하기 바란다. 이 두 방식은 리턴 타입을 int로 지정하기 때문에 프로그램의 실행 상태를 런타임 시스템에게 알려 줄 수 있다. 즉, 프로그래머의 판단에 따라 문제없이 실행됐다면 EXIT_SUCCESS를, 그렇지 않다면 EXIT_FAILURE를 리턴한다.

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