void main()还是int main()
2011年7月13日
没有评论
写C的时候,一直用main()或者void main(),也不知道其中的道理,直到用g++编译void main()时无法通过才让我google到了下面的内容:
main函数的返回值大家注意了吗,也许有人会说可以没有返回值,如果你深入到程序的CRT启动代码,你会发现….
__initenv = envp;
mainret = main(argc, argv, envp);
if ( !managedapp )
exit(mainret);
if (has_cctor == 0)
cexit();
按照新的C99标准,即使函数本身没有定义返回值,编译器也会加上,以返回给激发程序,运行状态。很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* … * / } is not and never has been C++, nor has it even been C. ( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下 C 和 C++ 标准中对 main 函数的定义。 阅读全文…