본문 바로가기

C Language/Tip / Information

int main()과 void main() 무엇을 써야 될까?

c언어를 처음 접하게 되면서 책마다 다른 것이 하나씩 있기 마련입니다.
그중에서 가장 초보자를 헷갈리게 만드는 것이 main 선언 부분인데요.
어떤 책에서는 int main()을 사용하고 다른 책에서는 void main() 사용하는 걸 볼 수 있었을 것입니다.
그래서 이번에는 이 int main()과 void main()의 차이에 대해서 간단히 이야기를 해 보겠습니다. 

처음으로 하고 싶은 말은 int main()이 표준이며, void main()은 잘못된 표기라는 것을 말해 주고 싶습니다.
그래서 int main() 같은 경우는 모든 컴파일러에서 잘 동작을 하게 되지만 void main()은 dev c++이나 g++에서는
에러가 나게 됩니다. 

이제 왜 int main()을 사용해야 되는지 설명을 해 보겠습니다. 

설명에 앞서 main 함수를 보면
int main()
{
    return 0;
}
이렇게 사용하게 됩니다.
여기에서 return 0; 의 역할은 main() 함수가 정상적으로 종료됨을 의미하는 exit(0) 을 호출한 후 main() 함수를
종료하는 역할을 하게 됩니다.
여기에서 exit()의 파라미터인 status 값은 컴파일러마다 약간씩 다르게 정의가 되어 있습니다.
하지만 일반적으로 0 이면 정상종료를 의미하며 0 이외의 숫자는 각 번호에 맞게 지정이 된 각각의
에러 타입을 의미하게 됩니다.
참고로 Visual C++ 6.0 에서는 이 값이 다음과 같이 STDLIB.H 에 정의되어 있습니다.



그래서 int main()으로 코딩을 하지 않고 void main() 으로 코딩을 한다면 컴파일러가 컴파일 에러를 발생시키지
않아도 프로세스 상에서는 종료조건을 지정해 주지 않았기 때문에 main()함수에서 올바르지 않은 종료조건을
운영체제에 리턴하고 자신을 종료할 가능성이 있게 되어 오류가 생길 수도 있게 됩니다. 
 


'C Language > Tip / Information' 카테고리의 다른 글

변수 명 적을때 유의점  (0) 2009.04.29
변수와 상수의 차이점  (0) 2009.04.29
C 언어의 역사  (0) 2009.04.29
C 언어 특징  (0) 2009.04.29