2015-01-03 2 views
2
여기

내 코드입니다 : 터미널에서 내가 "./a.out"를 입력하지만 때 나는, "0 프로그램 종료 코드로 종료"하단에 표시 엑스 코드에서 실행C에서 0을 아무것도 콘솔에 반환해야합니까?

#include <stdio.h> 

int main(void) 
{ 
    printf("Hello World!\n"); 
    return 0; 
} 

프로그램을 실행하기 위해 "Hello World!" 예상대로,하지만 그 밖의 것은 없습니다.

0이 반환 될 때와 관련하여 뭔가가있을 것으로 예상됩니다. return 0이 프로그램이 올바르게 종료되었다는 것을 알려주고 있다면, 올바르게 종료하면 0이 다시 계산되는 것과 관련하여 어떤 것을 보지 않겠습니까? 반환 값이 아무것도 출력되지 않는다면, 그 경우에 나는 반환 된 값을 어떻게 알 수 있습니까? 콘솔에 인쇄 된 것을 볼 수 없다면

답변

1

main()의 반환 값은 프로그램의 종료 코드이며 인쇄되지 않습니다.

Xcode가 프로그램의 종료 코드를보고하고 있습니다.

콘솔에 인쇄 할 경우 문제가 발생했습니다하는 프로그램 호출자에게 통지하고 싶다면 그냥

./a.out 
echo $? 

할 다음 수는 exit(SOME_ERROR_CODE); 동등의 main()에서 return SOME_ERROR_CODE;하지만 return에 청소기입니다 main()의 오류 코드

Xcode는 프로그램 코드 exit에 대해 알려주고 프로그램이 종료 된 이유를 알아야만 의미있는 exit 코드 값이 도움이 될 것입니다. 콘솔 $?에서

마지막 명령의 종료 코드는 $?에 대한이 자주 체크를 잘 명령을 실행 한 후 만들어 찾을 수 sh 스크립트, 저장되는 특별한 변수입니다.

4

Xcode는 디버깅을 위해 항상 프로그램의 종료 코드를 반환하고 return은 main()에 대해 인쇄하지 않습니다.

+0

그래서 내 프로그램이 올바르게 종료되었는지 알기 위해 "echo $?"를 사용해야합니다. 권리? – tony

+0

@tony 대부분의 쉘은이 기능도 제공합니다. 'tcsh'에서'printexitvalue'를 설정하여 그것이 0이 아닌 경우 종료 값을 보여주고, 내 프롬프트에서 마지막 종료 상태를 보여줄 수 있습니다 (그래서'echo $? '를 할 필요가 없습니다). 'bash'와'zsh'도 이것을 할 수 있다고 믿지만, 거의 사용하지 않기 때문에 어떻게되는지 모르겠다. (... 너 자신을 찾거나 그것에 대해 질문해야한다.) – Carpetsmoker

+0

@anoyd_bi_me_grammers it 's 명확하지 않은데, 만약 어떤 에러 코드도 반환하지 않는다면 항상 "0"을 리턴 할 것입니다. –

1

Return 0은 아무 것도 인쇄하지 않습니다. 디버깅 목적으로 프로그램 작성이 완료되면 프로그램에 알려주는 프로그램입니다.

2

프로그램의 종료 상태는 플랫폼 환경에 따라 즉, 어떤 방식 으로든 호스팅 환경에서 처리됩니다. 개발 환경은 대개 프로그램의 종료 상태를 표시합니다. 일반 터미널은 기본적으로 그렇지 않습니다.

따라서 반환 된 0에 대한 응답으로 아무 것도 인쇄되지 않게하십시오. 인쇄되지 않아야합니다. 당신이 알아 낸 특별한 고의적 인 조치를 취하지 않는다면 반환 된 것을 "안다"고해서는 안됩니다.

대부분의 경우 종료 상태는 조용히 처리되어 대부분 인쇄하지 않을 것입니다. 실행 환경에서 분석하고 그 분석 결과에 따라 추가 결정을 내릴 것입니다. 그러나 호스팅 실행 환경에서 인쇄하도록하려면 * nix 터미널에서 echo $? 또는 Windows에서 echo %ERRORLEVEL%을 사용하여 명시 적으로 요청할 수 있습니다.

관련 문제