void main和int main之间的区别?

Kre*_*dns 54 c++ standards

我声明我的C++程序的方式有关系吗?

Ala*_*lan 70

区别在于一个是正确的定义方式main,另一个不是.

是的,它确实重要.或

int main(int argc, char** argv)
Run Code Online (Sandbox Code Playgroud)

要么

int main()
Run Code Online (Sandbox Code Playgroud)

是你main的C++规范的正确定义.

void main(int argc, char** argv)

并不是,IIRC,是旧的微软C++编译器带来的堕落.

https://isocpp.org/wiki/faq/newbie#main-returns-int

  • "char*argv []"与"char**argv"相同 (30认同)
  • 实际上,虽然这没关系,但我认为int main()比int main(void)更受欢迎 (11认同)
  • 它们是参数的*最小*要求(它是"char*argv []",而不是"char**argv").明确允许实现提供更多表单.但是,int return类型在您声明时是不可协商的. (3认同)
  • int main(void)也是合适的 (2认同)

vob*_*ect 25

Bjarne Stroustrup说得很清楚:

这个定义void main()不是,也从来就不是C++,也不是C.

参考文献.


Red*_*ing 12

你应该用int main.C和C++标准都指定main应该返回一个值.


Joe*_*Joe 9

对于C++,只允许使用int.对于C,C99表示只允许使用int.先前的标准允许void返回.

简而言之,永远int.

  • C89也需要返回int. (3认同)

X-I*_*nce 6

很久以前,我发现这个页面(void main(void))包含“标准说它无效”论点之外的许多原因。在特定的操作系统/体系结构上,它可能会导致堆栈损坏和/或发生其他令人讨厌的事情。


Sva*_*nte 5

关键是,C 程序(和 C++ 相同)总是(应该?)返回成功值或错误代码,所以它们应该以这种方式声明。

  • 是的?谁会在您的火星漫游者裸机设备中使用该返回代码?:) (2认同)