C/C++에서의 보이드 메인과 int 메인과의 차이는?
내가 어떤 방식으로 선언하든 상관없는가?main
C++(또는 C) 프로그램에서 기능을 수행합니까?
차이점은 하나는 올바른 정의 방법이라는 것입니다.main
, 다른 하나는 그렇지 않습니다.
그래, 그건 중요해.어느 하나
int main(int argc, char** argv)
또는
int main()
적절한 정의입니다.main
C++ 사양에 준거합니다.
void main(int argc, char** argv)
IIRC는 이전 마이크로소프트의 C++ 컴파일러와 함께 제공된 잘못된 기능이 아닙니다.
https://isocpp.org/wiki/faq/newbie#main-returns-int
Bjarne Stroustrup은 이것을 분명히 했다.
정의
void main()
C++도 아니고 C도 아닙니다.
참고 자료 참조해 주세요.
를 사용해 주세요.int main
C와 C++ 규격 모두 다음과 같이 규정되어 있습니다.main
는 값을 반환해야 합니다.
요점은 C프로그램(및 C++는 동일)은 항상 성공값 또는 에러코드를 반환하기 때문에 그렇게 선언해야 한다는 것입니다.
오래 전에 나는 이 페이지(void main(void))를 발견했는데, 그것은 "표준이 유효하지 않다고 말한다"는 주장 이외의 많은 이유를 담고 있었다.특정 운영체제/아키텍처에서는 스택이 파손되거나 기타 불쾌한 일이 발생할 수 있습니다.
C++의 경우 int만 허용됩니다.C의 경우 C99는 int만 허용된다고 합니다.에 대해 허용되는 이전 표준void
돌아가다.
한마디로 항상int
.
사양대로라면 항상 선언해야 합니다.main
반환int
.
그러나 실제로는 대부분의 컴파일러는 어느 쪽이든 상관없습니다.따라서 실제 차이점은 셸에 값을 반환할 필요가 있는지 여부입니다.
C++에서는main()
돌아와야 한다int
단, C99에서는main()
비-를 가지다int
return 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
'IT이야기' 카테고리의 다른 글
Java에서 클래스 개체가 다른 클래스 개체의 하위 클래스인지 확인합니다. (0) | 2022.06.30 |
---|---|
스프링 AOP와 Aspect J (0) | 2022.06.29 |
외부 Java 클래스가 내부 클래스 개인 구성원에 액세스할 수 있는 이유는 무엇입니까? (0) | 2022.06.29 |
stubing에 Argument Captor를 사용하는 방법 (0) | 2022.06.29 |
함수 포인터, 폐쇄 및 람다 (0) | 2022.06.29 |