回 帖 发 新 帖 刷新版面

主题:给格子裙大人,因为短信只允许200个字,不够,所以不得不放这里

ISO14882 第 135 页:
If the parameter-declaration-clause is empty. the function takse no arguments. The parameter list(void) is equivalent to the empty parameter list. Except for this special case. void shall not be a parameter type( though types derived from void. such as void*. can ).
最后一句话只是说 void不是一个参数类型,而void的衍生类型如void*则不在此列。而且在ISO14882中有9处使用了(void),包括成员函数。
int main( void ) 的意思是其参数列表为空,而不是说其有一个void类型的参数,因此她是合法的。

回复列表 (共10个回复)

沙发

它是合法的~
但不是提倡的。
而最标准也是最提倡的:
C++标准应该是int main()
C标准应该是int main(void)

板凳

再加一句:你可以去找所有的 C++ 英文文档,看有几处用到int main(void)
//当然,int main(void)也是对的。~`不过应该算得上是不提倡吧~

3 楼

谢谢,但从文档上看,并没有不提倡的意思。

4 楼

带类的C引进了概念 f(void), 这声明 f 是一个没有参数的函数。与些相对的是C里的 f(),
它声明了一个可以具有任何类型的任意个参数的函数,而且不进行任何类型检查。用户们不久就使我确信 f(void)在记法上很不优雅,让 f() 接受参数也是不符合直觉的。
最后,试>验的结果是用 f() 表示没有参数的函数,正如许多初学者所期待的那样。由于有Doug Mciiroy 和Dennis Ritchie的支持,我斗胆认可了在这里与C的分离。
只是在他们用了"可憎的">去指责 f(void) 之后,我才敢去给 f() 规定他最明显的意义。当然,到今天为止C的类型>规则还是比C++宽松得多,而且 ANSI C从带类的C那里借去了"可憎的f(void)"。

我自己打印出来的:《C++设计与演化》2.6.1小节

5 楼

强调一下 《C++设计与演化》的作者是C++标准化委员会的主席,也是C++的发明者.

//另说一点。
C99标准是说过int main(void) 那也是C语言。而C++中从来没听说过标准用int main(void)这说法。只从书上和文档看到过标准C++主函数用int类型。也就是说int main()

6 楼

从您节选的这段话中,只是说明在C++中f()等于f(void),并没有说f(void)是不提倡的,这个“可憎的”也只是别人对f(void)的评价。

----
Bjarne Stroustrup 是 C++ 的发明者,C++的发明者只有一个,就是 Bjarne Stroustrup。
但 Bjarne Stroustrup 只是 C++标准化委员会 的成员,而不是主席,虽然 Bjarne Stroustrup 的决定权在事实上是最大的。
对于其非主席一事,Bjarne Stroustrup 的回答是:C++是开放的,并不属于我一个人,而且作为主席,更重要的是管理能力,这不是我的特长。

7 楼

你扯别的话题了吧~
      -_-!!

8 楼

没有啊。

9 楼

好了。就到这里吧~我菜鸟一个~以后还请高手多指教~`
以后C++用int main() 而C用int main(void) 这个是我们得出的结论,肯定不会出错。


做个广告。
有时间来我们论坛玩`
www.cyuyan.com
[em20] 拜拜`

10 楼

谢谢,但是我仍然决定用 int main( void )。

我来回复

您尚未登录,请登录后再回复。点此登录或注册