2011-04-12 64 views
0

我目前正在一些代码中实现补丁文件,显然其中一个补丁文件在主类之外的类中使用return 0。我知道返回0会关闭应用程序,如果它在主函数中,但是我不确定它如何在主函数之外的类中运行。基本上,代码可以在伪代码中可以总结出这样的:会在主关闭应用程序之外的类中使用C++返回0?

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

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

通常当我想在C++返回0,我觉得在这种情况下称其为主力,但是退出应用程序的,我不确定这是否会退出应用程序,或者只是该类的功能/它自己的类。有人能解释一下在这种情况下返回0实际上会做什么?

感谢, Flyboy

+0

如果你有一个返回值a^2 + b的函数,你会期望这会阻止程序运行吗? – 2011-04-12 17:17:50

回答

13

号,如果这会发生什么

想到的就是如此:

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

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

这并不是说是从main返回重要零,这是return。您可以返回main中的任何值,这样做会导致程序退出(所有全局变量清理完毕,流关闭,其他清理任务完成)。

+0

谢谢,这使事情变得更加清晰。回归而不是主要导致退出的价值也是很好的知识,我不知道这只是回报,但我认为这是整个回报0;导致它。 – th3flyboy 2011-04-12 17:32:42

3

不,从函数返回0(或其他任何东西)将不会退出应用程序。从主返回 - 而不管返回的值 - 退出(单线程)应用程序。但其他功能始终如一。

3

return 0仅与当前函数的范围有关,因此如果它在main之外,它将不会关闭该应用程序。

3

main返回退出应用程序(不考虑数值的返回 - 尽管标准只定义为0EXIT_SUCCESSEXIT_FAILURE含义)。从其他函数返回只是将指定值(如果有)返回给调用者。控制流程不会因为返回的值恰好为零而改变。

相关问题