荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店