최상의 답변
“main ()”함수에 대해 이야기하고 있다고 가정합니다.
프로그램이 종료 될 때 C가 발명 된 UNIX / Linux (다른 OS에서도 가능)에서는 실행을 시작한 시스템이 성공 여부를 알 수있는 “종료 상태”를 반환합니다.
반환 된 결과 0은 “모든 것이 정상적으로 작동했습니다!”를 의미합니다. -0이 아닌 결과는 일종의 오류 코드를 나타냅니다.
이는 사람들이 아이콘 등에서 프로그램을 시작하는 그래픽 환경에서 많이 사용되지 않습니다. 그러나 명령 줄 응용 프로그램에서는 신의 선물입니다.
예를 들어 복잡한 응용 프로그램을 컴파일하고 연결하는 데 사용되는 “make”도구를 사용합니다. 다양한 컴파일러와 링커는 작업중인 프로그램이 올바르게 컴파일되면 “return 0″을 수행하고 컴파일되지 않은 경우 “return 1″을 수행합니다.
“make”프로그램은 리턴을 검사합니다. 실행되는 모든 프로그램의 상태-그중 하나가 0이 아닌 다른 값을 반환하면 빌드를 중단합니다.
이것은 정말 편리한 일입니다.
그래서 제가 작성한 프로그램이 있습니다. 일부 이미지 처리를 수행합니다. 읽은 파일이 손상되면 “return 2″를 수행합니다. 파일이 존재하지 않으면 “return 1″을 수행하고 모든 것이 정상적으로 작동하는 경우에만 “return 0″을 수행합니다.
이제-릴리스 패키지에 이미지가 내장 된 복잡한 프로그램을 빌드 할 경우-Makefile이 이미지 처리 프로그램을 트리거하도록 할 수 있습니다. 어떤 이유로 든 실패하면 “make”실행이 중단됩니다.
모든 UNIX / Linux 명령 줄 도구는 실패에 대해 0이 아닌 값을 반환합니다. 따라서 표준 “rm”프로그램을 사용하여 파일을 삭제하더라도 파일이 성공적으로 삭제 된 경우 “return 0”, 어떤 이유로 든 삭제할 수없는 경우 “return 1″을 반환합니다.
몇몇 프로그램은 정확히 무엇이 잘못되었는지에 따라 다른 코드를 반환합니다. 비정상적입니다.
또한 “exit (0)”함수를 호출 할 때 매개 변수 “0”도 반환 상태입니다. 일이 잘 작동하면 “exit (0)”을 수행하고 ” 그렇지 않은 경우 exit (1) 이 표시됩니다.
답변
여러 곳에서 C로 return 0 문을 실행할 수 있으므로이 질문은 다양한 답변을 얻을 수 있습니다.
Let 한 가지 구체적인 사례에 답합니다.
int main(int argc, char *argv[])
{
...
return 0;
}
왜 우리는 main에서 0을 반환합니까?
처음 UNIX와 Linux로 예시되는 * IX 계열의 운영 체제에서는 단일 정수 종료 코드를 가진 프로그램이 존재합니다. 일반적으로 성공 또는 실패를 나타내는 데 사용됩니다.
대부분의 경우 0 값은 성공을 나타내고 0이 아닌 값은 실패이며 값은 일반적으로 특정 오류 정보를 나타냅니다.
* IX 시스템에서 실행되는 C 및 C ++ 프로그램은 표준 라이브러리 exit () 함수에 전달 된 정수 값 또는 정수로이 종료 코드를 제공합니다. main () sp에서 반환 됨 an>.
이 경우 main에서 0을 반환하여 * IX 시스템에 프로그램이 성공 코드로 종료되었음을 나타냅니다.
-Mark