- 论坛徽章:
- 2
|
原帖由 yuchenyier 于 2009-4-25 21:38 发表
的确能正常运行!而且主函数里还没返回值!
C++标准规定, main函数中允许省略返回语句 —— 仅仅对main。
在每个退出点上, 如果没有返回语句, 将认为返回0。
也就是说, 一个合法的最小的C++程序如下:
但在VC6中, 给出了一个很搞笑的警告:
warning C4508: 'main' : function should return a value; 'void' return type assumed
同样, 如下的C++代码也是合法的:
int main(int argc,char* []) {
switch (argc)
{
case 1:
return -1;
default:
case 3:
case 2:
;
}
}
|
如果没有输入命令行参数, 返回一个错误。
其他情况, 当控制流出case 2之后, return 0;会被自动添加。
同样, VC6还是会给出警告……
warning C4715: 'main' : not all control paths return a value
如果查看VC生成的汇编代码, 可以看到 VC8、9中, 在返回之前, 有:
xor eax,eax
gcc的汇编格式我看不懂 …… 就不说了 ……
但是windows下和xnix下都有相应的取得上次调用返回值的方式, 也可以验证之。
说了这么多…… 楼主的代码是正确的。
只是对VC6有点不友好 ……
不对…… 是VC6会对楼主的代码不友好 …… |
|