荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Dreamer (黄昏·落霞·萤火·街灯), 信区: SoftDev
标  题: 【C++】[FAQ]我可以写"void main()"吗?
发信站: 荔园晨风BBS站 (Mon Jun 14 14:02:07 2004), 站内信件


Q: 我可以写"void main()"吗?
A: 这样的定义
void main() { /* ... */ }


不是C++,也不是C。(参见ISO C++ 标准 3.6.1[2] 或 ISO C 标准 5.1.2.2.1)
 一个遵从标准的编译器实作应该接受
int main() { /* ... */ }


int main(int argc, char* argv[]) { /* ... */ }


编译器也可以提供main()的更多重载版本,不过它们都必须返回int,这个int是返
回给你的程序的调用者的,这是种“负责”的做法,“什么都不返回”可不大好哦
。如果你程序的调用者不支持用“返回值”来交流,这个值会被自动忽略——但这
也不能使void main()成为合法的C++或C代码。即使你的编译器支持这种定义,最
好也不要养成这种习惯——否则你可能被其他C/C++程序员们认为浅薄无知哦。

在C++中,如果你嫌麻烦,可以不必显式地写出return语句。编译器会自动返回0。
例如:
#include<iostream>

int main()
{
std::cout << "This program returns the integer value 0\n";
}


麻烦吗?不麻烦,int main()比void main()还少了一个字母呢 :O)另外,还要请
你注意:无论是ISO C++还是C99都不允许你省略返回类型定义。这也就是说,和
C89及ARM C++[译注:指Margaret Ellis和Bjarne Stroustrup于1990年合著的《
The Annotated C++ Reference Manual》中描述的C++]不同,int并不是缺省返回
值。所以,
#include<iostream>

main() { /* ... */ }
会出错,因为main()函数缺少返回类型。




--

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.223]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店