题
(我采用的视觉C++2008)我总是听说,主要()是 需要 到返回整数,但在这里我不放 return 0;
和它编制的0错误和0警告!在调试窗它说,该程序已经退出的代码0.如果这种功能是命名的任何其他主要()时,编译器抱怨说,'等等'必须返回的价值。坚持一 return;
还导致错误出现。但是,离开它完全,它汇编了就好了。
#include <iostream>
using namespace std;
int main()
{
cout << "Hey look I'm supposed to return an int but I'm not gonna!\n";
}
这可能是一个错误在VC++?
解决方案
3.6.1主要功能
....
2实施不应预先定义的
main
功能。这种功能不应超载。它应当有一个回报类型的类型int
, 但另有其类型为执行定义。所有实现,应允许两个以下定义的主要:int main() { /* ... */ }
和
int main(int argc, char* argv[]) { /* ... */ }
....并且它继续增加...
5
return
在声明main
有效果的主要功能(摧毁任何对象的自动存储持续时间),并呼exit
与返回值的参数。 如果控制达到结束main
而不会遇到返回的声明,其效果是,执行返回0;
试图找到一个网上复制的C++的标准,所以我可以引用这个通道 我找到了一个博客中,报价的所有权位比我更能。
其他提示
这是一部分C++语言的标准。一个隐含的返回0是产生于你如果没有明确的返回的声明,在主要的。
我敢肯定VC++只是插入一个返回0如果你不包括一个在主要职能。同样的事情可以发生的有功能太多,但在这些情况下至少你会得到一个警告。
第6.6.3/2国家"流动的关闭结束的一个功能等同于一个返回与没有价值;这一结果未定义的行为值返回的功能。".
一个例子是代码下面,在最好的给出了警告VS2010/g++
int f(){
if(0){
if(1)
return true;
}
}
int main(){
f();
}
所以整个的一点是,'主要'是特别如先前的答复已经指出。
不隶属于 StackOverflow