|
몇몇 컴파일러(VC++ 6.0, VC++ 2005 등... ) 에서 int main() 과 void main() 이 둘다 컴파일 에러없이 잘 동작하는 반면, dev C++, g++ 과 같은 컴파일러에서는 void main() 은 컴파일 에러를 낸다. 늘 습관처럼 int main() 을 쓰던터라 이번기회에 int main() 과 void main() 의 차이에 대해 자세히 찾아보았다. 우선 결론부터 말하자면 int main() 이 C/C++ 표준에 맞는 표기이며, void main() 은 잘못된 표기인 것이다. 그러므로 void main() 으로 코딩을 한다면 설사 컴파일러가 컴파일 에러를 발생시키지 않는다 할지라도 프로세스 상에서는 main() 이 올바르지 않은 종료조건을 OS 에 리턴하고 자신을 종료할 가능성이 있게 된다. 왜 그렇다면 많은 서적과 예제에서 여전히 잘못된 표기인 void main() 을 쓰고 있을까? 초창기의 C 에서는 void 타입의 함수란 존재하지 않았으며, return 이 의미가 없는 경우에는 int 형 garbage 를 리턴하는 함수를 썼다 한다. 초기의 이러한 전통때문에 리턴값이 별 의미없는 int 형 함수들이 시간이 지나면서 프로그래머들의 취향에 따라 void 형 함수들로 고쳐 사용되었는데 이 과정에서 main() 함수도 void main() 으로 많이 사용되어진 것이 아닌가 추측된다. void main() 으로 실행할 경우 default 로 정상종료를 시키는 컴파일러들이 많아짐에 따라 프로그래머들은 별 문제 없이 이러한 코딩습관을 갖게 되었고, 사용자들이 이런 습관대로 쓰는 경우가 많아지자 컴파일러 제작사들도 사용자들의 습관에 따라 void main() 을 warning 이나 컴파일 에러없이 컴파일 되도록 만들게 되었다... 이것이 유력한 주장이다. 참고 : http://www.eskimo.com/~scs/readings/voidmain.960823.html 또다른 참고 : http://libe.tistory.com/2861180 'IT Story > Programming Language' 카테고리의 다른 글
|







히히, 전 이제 막 씨언어 접한 학생인데,
학교에선 맨날 교수님이 Visual C 로, 문자 출력시에 void main()을 쓰더라구요,
전 dev++에 익숙해서 그런지 맨날 void 쓰니까 막햇갈려서,
그래서 그냥 int main() 이것만 써요,ㅋ
왜 그럴까 궁금했는데, 이제 쫌 알겠어요, 게시글 굿또!
ㅎㅎㅎ 감사합니다
호옷... 이거 1학년때가 생각나는군....
k = 1;
k++ + ++k = ?
++k + k++ = ?
뭐 이런거 고민하고 그랬었지...
둘다 답은 4 지만 1+3 과 2+2 의 차이라는...
뭐 기본이 중요한거 아니겠냐...
잘보고 갑니다~
좋은내용이라 퍼갑니다~ ^^
ㄳ
좋은 내용 잘 보고 갑니다. 퍼가요~
네~