2011-04-12 1 views
0

나는 현재 일부 코드에서 패치 파일을 구현하고 있으며 분명히 패치 파일 중 하나는 메인 외부의 클래스에서 return 0을 사용합니다. 내가 main 함수에있는 경우 return 0 응용 프로그램을 닫을 것이라고 알지만, 주 함수 밖의 클래스에서 어떻게 작동하는지 확실하지 않습니다. 기본적으로 코드가 의사에 다음과 같이 요약 될 수있다 : 나는 C++에서 반환 0 생각하면는 응용 프로그램을 닫는 외부의 클래스에서 C++을 사용하여 0을 반환합니까?

boost::uint64_t 
namespace::class(etc. etc.) 
{ 

    if (method.isValid) 
    { 
     //do stuff 
    } 
return 0; 
} 

는 일반적으로, 나는이 경우 그러나, 주에서 그것을 호출하여 응용 프로그램을 종료 생각, 내가 아니에요 이것이 응용 프로그램을 종료하거나 클래스의 기능/클래스 자체를 종료하는지 확인하십시오. 누군가가 반환 0이 실제로이 상황에서 무엇을하는지 설명해 주시겠습니까?

덕분에, 의 플라이

+0

값을 a^2 + b로 반환 한 함수가 있으면 프로그램 실행을 중단시킬 것으로 예상됩니까? –

답변

13

번호

생각해 사건이었다. main에서 모든 값을 반환 할 수 있으며 이렇게하면 프로그램이 종료됩니다 (모든 전역 변수가 정리되고 스트림이 닫히고 다른 정리 작업이 완료된 후). main에서 돌아

+0

고마워요, 이것으로 훨씬 더 명확 해집니다. 돌아 오는 것이고 주된 원인이되는 출구의 가치가 아니라는 것도 잘 알고 있기 때문에, 나는 그것이 단지 수익이라는 것을 알지 못했지만, 그것이 전체 수익 0이라고 생각했습니다. 그것을 일으켰다. – th3flyboy

3

아니, 함수에서 0 (다른 사람 또는 아무것도를) 반환하는 응용 프로그램을 종료하지 않습니다. 반환 값의에 관계없이 에서 복귀 - (단일 스레드) 응용 프로그램을 종료합니다. 그러나 다른 기능들은 항상오고 간다.

3

return 0은 현재 함수의 범위와 관련이 있으므로 응용 프로그램이 주 외부에있는 경우 응용 프로그램을 닫지 않습니다.

int add(int a, int b) { return a + b; } 

// somewhere: 
int zero = add(2, -2); // would this exit the program? 

그것은 main의 반환에 중요 0이 아닌, 그것은이 return의 :이 경우 어떻게 될지의

3

응용 프로그램 종료 (값에 상관없이 반환을 - 표준은 0, EXIT_SUCCESSEXIT_FAILURE에 대한 의미를 정의하지만). 다른 함수에서 돌아 오면 지정된 값 (있는 경우)을 호출자에게 반환합니다. 반환되는 값이 0이되기 때문에 제어 흐름은 변경되지 않습니다.

관련 문제