IT이야기

C/C++에서의 보이드 메인과 int 메인과의 차이는?

cyworld 2022. 6. 29. 21:15
반응형

C/C++에서의 보이드 메인과 int 메인과의 차이는?

내가 어떤 방식으로 선언하든 상관없는가?mainC++(또는 C) 프로그램에서 기능을 수행합니까?

차이점은 하나는 올바른 정의 방법이라는 것입니다.main, 다른 하나는 그렇지 않습니다.

그래, 그건 중요해.어느 하나

int main(int argc, char** argv)

또는

int main()

적절한 정의입니다.mainC++ 사양에 준거합니다.

void main(int argc, char** argv)

IIRC는 이전 마이크로소프트의 C++ 컴파일러와 함께 제공된 잘못된 기능이 아닙니다.

https://isocpp.org/wiki/faq/newbie#main-returns-int

Bjarne Stroustrup은 이것을 분명히 했다.

정의void main()C++도 아니고 C도 아닙니다.

참고 자료 참조해 주세요.

를 사용해 주세요.int mainC와 C++ 규격 모두 다음과 같이 규정되어 있습니다.main는 값을 반환해야 합니다.

요점은 C프로그램(및 C++는 동일)은 항상 성공값 또는 에러코드를 반환하기 때문에 그렇게 선언해야 한다는 것입니다.

오래 전에 나는 이 페이지(void main(void))를 발견했는데, 그것은 "표준이 유효하지 않다고 말한다"는 주장 이외의 많은 이유를 담고 있었다.특정 운영체제/아키텍처에서는 스택이 파손되거나 기타 불쾌한 일이 발생할 수 있습니다.

C++의 경우 int만 허용됩니다.C의 경우 C99는 int만 허용된다고 합니다.에 대해 허용되는 이전 표준void돌아가다.

한마디로 항상int.

사양대로라면 항상 선언해야 합니다.main반환int.

그러나 실제로는 대부분의 컴파일러는 어느 쪽이든 상관없습니다.따라서 실제 차이점은 셸에 값을 반환할 필요가 있는지 여부입니다.

C++에서는main()돌아와야 한다int단, C99에서는main()비-를 가지다intreturn type 입니다.다음은 C99 규격에서 발췌한 것입니다.

5.1.2.1 프로그램 부팅

프로그램 시작 시 호출되는 함수의 이름은 main입니다.구현에서 이 함수에 대한 프로토타입이 없음을 선언합니다.이 값은 int의 반환 유형으로 정의해야 하며 매개 변수는 없습니다.

int main(void) { /* ... */ }

또는 다음 2개의 파라미터(여기에서는 argc 및 argv로 표기되지만 선언된 함수의 로컬이기 때문에 임의의 이름을 사용할 수 있습니다)를 사용합니다.

int main(int argc, char *argv[]) { /* ... */ }

또는 동등한 것, 또는 다른 구현 정의 방식.

는 "gcc"를 컴파일합니다.void main()return 0;막히는 브레이스를 마주치게 됩니다.

언급URL : https://stackoverflow.com/questions/636829/difference-between-void-main-and-int-main-in-c-c

반응형