2016-09-04 1 views
-7

주 함수 "main()"의 반환 값을 계산하는 방법은 무엇입니까? 난 그냥 주 함수의 반환 값이 실제로 "0"그것이 성공적으로 실행되었는지 확인하고 싶습니다.C++에서 main 함수 "main()"의 반환 값을 구하는 방법은 무엇입니까?

감사합니다.

+1

'main()'의 이름을'notmain()'으로 변경하십시오. 'notmain()'을 호출하는 새로운'main()'함수를 추가하고 반환하는 값을 출력합니다. –

+0

컴파일러가 아닌 반환 값을 결정합니다. 또한,'main()'을 호출하는 것은 비 전통적이며 대수롭지 않다. –

+3

쉘에서'echo $?'는 보통 잘 서비스한다. –

답변

-1

스택 오버플로에 오신 것을 환영합니다!

0이면 0입니다. 고객님의 함수의 반환 값을 지정하는 사람이 귀하입니다. 확실하지 않은 경우 코드 및/또는 문제를 추가하여 귀찮습니다.

0

다음 결과가 0을 반환하는지 테스트 하시겠습니까?

int main() { 
    int rc = doSomething(); 
    std::cout << rc << "\n"; // Just print it out before returning 
    return rc; 
} 

을 그러나 당신이 당신의 응용 프로그램을 실행하는 곳에서 의 반환 값을 확인하는 것이 좋습니다 :

int main() { 
    int rc = doSomething(); 
    return rc; 
} 

이처럼 할 수있는 UNIX/Linux의

을 (쉘) :

> ./my_app 
> echo $? 
0 
(명령 프롬프트에서) Windows에서

: C 당신이 main()에 전화를 가로 채거나 스스로를 호출 할 수 없습니다 ++ 것을

> my_app.exe 
> echo %ERRORLEVEL% 

참고.

3.6.1 주요 기능

함수 main는 프로그램 내에서 사용되지 않는다.

따라서 main() 호출을 감싸고 반환 값을 출력하지 마십시오. 그것이 작동하더라도, 이식 가능하지 않을 것입니다. 실제로 두 번 응용 프로그램을 실행하게 될 것입니다.

+0

"네가 원하는 것은 불가능하다."'std :: cout << the_return_value; the_return_value를 반환; – juanchopanza

+0

"C++에서는 main() 호출을 가로 채거나 직접 호출 할 수 없습니다." 아니, 당신이 할 수있는, 내 대답을 내 코드를 참조하십시오 –

+0

아니, main() 안에 함수의 결과를 인쇄 할 뜻은 아닙니다. 모든 main()은 성공적으로 실행되면 마지막에 0을 반환합니다. 이 반환 값 "0"을 출력하고 싶습니다. – OSUCowboy

-1

unix 명령을 사용하여 이전에 실행 한 명령 (이 경우 c 프로그램)의 반환 값을 확인할 수 있습니다.

echo $? 

셸 변수 $? 이전 명령의 리턴 코드입니다.

How to find the return value of last executed command in UNIX?

당신이 바로 반환하기 전에 값 COUT, 코드 내에서 값을 선택하십시오.

0

main은 특별한 것이므로 대부분 직접 호출 할 수 없습니다. 반환 된 값은 운영 체제로 다시 전달되며 적절한 경우 실행됩니다. C++ 표준은 OS가 다양한 반환 값을 처리하는 방법을 지시 할 수 없으므로 추상화를 제공합니다. return EXIT_SUCCESS을 사용하여 성공을 나타낼 수 있으며 return EXIT_FAILURE을 사용하여 실패를 나타낼 수 있습니다. (return 0을 사용하여 return EXIT_SUCCESS을 의미 할 수도 있는데, 프로그램의 런타임 시스템이 올바르게 처리해야합니다.)EXIT_SUCCESSEXIT_FAILURE 매크로의 값은 프로그램을 컴파일 한 OS에 적합합니다. 0EXIT_SUCCESS의 일반적인 값이지만 OS가 다른 값을 요구하는 것은 가능하며 EXIT_SUCCESS은 해당 OS에 적절한 값을 갖습니다. 심지어 main에서 반환 된 값을 확인할 수 있다고해도 OS가 성공적인 프로그램에서 기대하는 값을 알지 못해도 많은 정보를 알 수 없습니다.

관련 문제