存档

‘C/C++’ 分类的存档

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 函数的定义。 阅读全文…

分类: C/C++ 标签: , , , ,