본문으로 바로가기

void main, int main, main 차이점

category C and C++/C 2021. 7. 3. 10:00
반응형

세 형태의 차이점에 대해 깔끔하게 정리해놓은 블로그가 있어서 원문을 복사해서 내 블로그에 긁어왔다. 좋은 정보 감사합니다.

 

출처는 맨아래 명시되어있다. 


결론부터 얘기하면 셋이 아무 차이도 없습니다.

 

그러나 내부적으로는 큰 차이가 있지요.

함수 정의 앞에 붙는 데이터형은 함수의 리턴값의 데이터형입니다.

int main() 하면 main() 함수가 종료할때 정수형 값을 리턴하겠다는 뜻이고,

void main() 하면 main() 함수가 종료할때 아무 값도 리턴하지 않겠다는 뜻이며,

main() 하면 void main() 과 같습니다.

main() 함수는 프로그램의 엔트리포인트로서, 운영체제가 실행시켜주는 함수입니다.

따라서 main() 함수의 리턴값은 운영체제가 받아보게되죠.

운영체제는 프로그램이 종료할때 main() 함수의 리턴값을 받아보고 프로그램이 왜 종료되었는가를 판단합니다.

보통의 경우, main() 함수가 0 을 리턴하면 프로그램이 정상적으로 실행을 마치고 종료한것으로 간주하고,

0 이외의 값을 리턴할 경우 비정상적으로 종료된것으로 간주합니다.

그러나 운영체제가 프로그램의 종료사유를 아는것이 사용자 입장에서는 아무 의미가 없는 동작입니다.

그래서 결론적으로, main() 함수가 어떤 값을 리턴하는지는 운영체제에게만 중요할 뿐 사용자에게는 전혀 중요하지 않습니다.

그러니 int main() 이든 void main() 이든 main() 이든 사용자 입장에서는 아무 차이점이 없고,

다만 운영체제의 입장에서는 약간의 의미가 있을수는 있습니다.

 

참고로, C언어 표준이 제시하는 가장 이상적인 main() 함수의 정의문은 이렇습니다.

-> int main( int argc, char *argv[], char *env[] )

 

https://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&page=1&sn1=on&divpage=1&sn=on&ss=off&sc=off&keyword=%BF%C0%C7%C7%C4%C9%C0%CC%B0%F8%C0%B0&select_arrange=name&desc=desc&no=1792 

 

프로그래밍

md.house 결론부터 얘기하면, 셋이 아무 차이도 없습니다. 그러나 내부적으로는 큰 차이가 있지요. 함수 정의 앞에 붙는 데이터형은 함수의 리턴값의 데이터형입니다. int main() 하면 main() 함수가 종

www.hackerschool.org

 

반응형

댓글을 달아 주세요

Razelo 기술노트
블로그 이미지 Razelo 님의 블로그
VISITOR 오늘26 / 전체59,373