EX를 반환해야 합니까?IT_SUCCESS 또는 main()의 0?
의 주요 이 반환되는 : C++ 프로그램의 루틴이 반환되는 경우: C++ 프로그램의 반환되는 경우0 ★★★★★★★★★★★★★★★★★」EXIT_SUCCESS
#include <cstdlib>
int main(){return EXIT_SUCCESS;}
또는
int main(){return 0;}
★★★★★★★★★★★★★★★★★?★★★★★★★★★★ 。EXIT_SUCCESS exit()무슨 일입니까?
는 …라고 했다.EXIT_SUCCESS할 수 있기 에 더 만, 만약 당신이 , 그것은 가 알고 바로는, 당신이 0을 장애로 간주할 수 있다는 것입니다.0컴파일러는 다른 값으로 변경할 수 있습니다.
EXIT_FAILURE의 리턴 중 (「」의 어느 쪽인가)입니다main ''로 합니다.exit()C 또는 C++ 프로그램에서 장애를 나타내는 유일한 휴대용 방법입니다. exit(1)예를 들어 VMS에서 실제로 정상적으로 종료되었음을 알릴 수 있습니다.
EXIT_FAILURE실패했을 는, 「 쪽인가 하면」, 「어느 쪽인가 하면」, 「어느 쪽인가 하면」을 .EXIT_SUCCESS게게성성성 、 때지균지균균위 。
이 실패 신호를 않는 는, 「실패」, 「실패」의 어느쪽인가를 할 수 .0 ★★★★★★★★★★★★★★★★★」EXIT_SUCCESS(그럴 가 없다EXIT_SUCCESS값은 0 이외의 경우도 있습니다만, 지금까지 들은 모든 실장에서는0 이 됩니다).
「」를 사용합니다.0필요 없는 작은 이점이 있습니다.#include <stdlib.h> C, 에서의#include <cstdlib>++를 )return이 아닌 exit() -- 、 , 、 중 、 크 、 d 、 stdlib 。
C 버전에서 C++의 끝에 했습니다.main()return 0; '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '어느쪽이든', '0 ★★★★★★★★★★★★★★★★★」EXIT_SUCCESS이라 한다.)return 0;★★★★★★★★★★★★★★★★★★★★★」
(OpenVMS).오랜만에 사용했는데 홀수 상태 값은 일반적으로 성공을 나타내고 짝수 값은 실패를 나타냅니다.은 C를 맵합니다.0로로 합니다.1return 0;는 정상적으로 종료되었음을 나타냅니다.변경되지 않고 , 이 값은 변경되지 않습니다.return 1;또한 정상적으로 종료되었음을 나타냅니다. EXIT_FAILURE 짝수 값을 0은 짝수 값입니다.)
그것은 중요하지 않다.둘 다 똑같아요.
C++ 표준 견적:
상태 값이 0 또는 EX인 경우상태 정상 종료의 구현 정의 형식인 IT_SUCCESS가 반환됩니다.
0은 정의상 마법의 숫자입니다.EXIT_SUCCESS는 거의 보편적으로 0과 같으며 충분히 만족스러운 수치입니다.그럼 왜 0을 반환/종료하지 않는 거죠?
exit(EXIT_SUCCESS); 의미는 매우 명확합니다.
exit(0); 반면에 어떤 면에서는 직관에 반합니다.셸 동작에 익숙하지 않은 사람은 C의 다른 모든 사용법과 마찬가지로 0 == false == bad라고 생각할 수 있습니다.그러나 아닙니다. 이 특별한 경우에는 0 == 성공 == 양호합니다.대부분의 숙련된 개발자들에게는 문제가 되지 않을 것입니다.근데 왜 아무 이유 없이 신입사원을 넘어뜨린 거지?
tl;dr - 매직 숫자에 정의된 상수가 있는 경우 처음부터 상수를 사용하지 않을 이유가 거의 없습니다.검색하기 쉽고, 종종 선명하게 표시되며, 비용도 들지 않습니다.
이것은 「모든 것의 상호 운용성과 휴대성」의 한계(신화)를 반영한, 결코 끝나지 않는 이야기다.
「성공」을 나타내기 위해서 프로그램이 반환하는 것은, 언어 사양이 아니고, 누가 그 가치를 취득하고 있는가에 의해서 정의해 주세요(OS 또는 프로그램을 기동한 프로세스).
그러나 프로그래머들은 "휴대용" 방식으로 코드를 쓰는 것을 좋아하기 때문에 반환되는 상징적인 가치를 정의하는 "운영 체제" 개념을 위한 그들만의 모델을 발명합니다.
다대다 시나리오(많은 언어가 많은 시스템에 프로그램을 작성하는 역할을 하는 경우)에서는 "성공"을 위한 언어 규약과 운영체제 규약(누구도 항상 같은 것을 허용할 수 없음) 간의 대응은 특정 타깃 플랫폼에 대한 라이브러리의 특정 구현에 의해 처리되어야 합니다.
그러나 불행히도 C 언어가 전개되었을 때(주로 UNIX 커널을 쓰기 위해) 명확하지 않았던 개념과 "return 0"이 성공을 의미한다는 말로 쓰여진 책의 Gigagrams는 C 컴파일러를 가진 OS에서 해당되었기 때문에.
그 후, 그러한 서신을 어떻게 취급해야 하는지에 대해서는 명확한 표준화가 이루어지지 않았다.C와 C++는 각각 "return values"에 대한 정의를 가지고 있지만 아무도 적절한 OS 변환을 허가하지 않습니다(또는 컴파일러 문서에 이에 대해 아무것도 기재되어 있지 않습니다.UNIX - LINUX 및 독립된 이유로 Windows에서도 0은 성공을 의미합니다.이것은 기존의 「컨슈머 컴퓨터」의 90 %를 커버합니다.대부분의 경우, 반품 가치를 무시합니다(따라서 수십년간 논의해 왔지만, 아무도 눈치채지 못할 것입니다).
이 시나리오에서는, 결정을 내리기 전에, 다음의 질문을 실시합니다.- 기존의 것에 대해 발신자에게 전달하고 싶은 것이 있습니까?(항상 0을 반환하는 경우)모든 것의 배후에 단서가 없다) - 발신자가 이 통신에 관한 규약을 가지고 있는가? (단일값은 규약이 아님에 주의해 주십시오.정보 표현을 허용하지 않습니다.)
이 두 답변이 모두 "아니오"인 경우, 아마도 좋은 해결책은 메인 리턴 스테이트먼트를 전혀 쓰지 않는 것입니다.(그리고 타겟에 대해 컴파일러가 결정하도록 합니다.)
규칙이 없는 경우 0=성공은 대부분의 상황을 충족합니다(규칙을 도입하는 경우 기호를 사용하는 것은 문제가 될 수 있습니다).
규약이 있는 경우 규칙과 일관성이 있는 기호 상수를 사용하십시오(그리고 플랫폼 간에 가치 일관성이 아니라 규칙 일관성을 보장합니다).
할 수 하면, 「」가 됩니다.#define츠키다 경우, 「 」EXIT_SUCCESS는 "정확한 번호"가 아니라는 점에서 의미가 있습니다.그러면 다른 모든 종료 코드가 더 읽기 쉬워집니다.EXIT_SOMETHING 프로그램이 돌아오는 쓰면 됩니다.return 0이 경우 정교한 리턴 코드 구조가 없다는 것을 알 수 있기 때문에 더 깨끗할 수 있습니다.
프로그램에서 돌아오는 것은 단지 관례에 불과합니다.
아니, 난 "EX"라는 어떤 상황도 생각해낼 수 없어IT_SUCCESS는 0이 아닙니다.
저는 개인적으로 0을 추천합니다.
IMHO...
EX를 사용하는 경우IT_SUCCESS 코드 이동성이 향상됩니다.
http://www.dreamincode.net/forums/topic/57495-return-0-vs-return-exit-success/
일부 컴파일러는 Mac C++ 컴파일러, EX에서 이 문제를 일으킬 수 있습니다.IT_SUCCESS는 정상적으로 동작했지만 Linux C++ 컴파일러에서는 어떤 EX를 인식하기 위해 cstdlib를 추가해야 했습니다.IT_SUCCESS는.그것 말고는 둘 다 똑같아요.
언급URL : https://stackoverflow.com/questions/8867871/should-i-return-exit-success-or-0-from-main
'source' 카테고리의 다른 글
| 행을 복사하고 MySQL에서 자동 증분 필드와 동일한 테이블에 삽입하려면 어떻게 해야 합니까? (0) | 2022.12.24 |
|---|---|
| 두 표의 점수를 비교하여 가장 최근의 점수가 다른 부분을 보여줍니다. (0) | 2022.12.24 |
| Date Time 개체를 딥 복사하려면 어떻게 해야 합니까? (0) | 2022.12.24 |
| Laravel의 ORM을 사용하여 결과를 "제한"할 수 있는 방법이 있습니까? (0) | 2022.12.24 |
| 다중 케이스 스테이트먼트 전환 (0) | 2022.12.24 |