在C和C++中定义main()函数的正确(最有效)方法是什么?int main()或void main()-为什么?那争论呢?如果int main(),则返回1或0?
这个问题有很多重复之处,包括:
C的main()函数的有效签名是什么?main()函数的返回类型void main()和int main()之间的区别?main()在C中的签名++main()的正确声明是什么?-对于C++,确实有一个非常好的答案。C中main()函数的样式C中main()方法的返回类型C中的int main()与void main()
相关:
C++-int main(int argc,char**argv)C++-int main(int argc,char*argv[])char*envp[]作为main()的第三个参数是否可移植?int main()函数必须在所有编译器中返回值吗?为什么C和C++中main()函数的类型留给用户定义?为什么int main(){}编译?C++14中main()的合法定义?
main的返回值指示程序如何退出。正常出口由main的0返回值表示。异常退出是由非零返回发出的信号,但对于如何解释非零代码没有标准。正如其他人所指出的,void main()是C++标准所禁止的,不应该使用。有效的C++主签名是:
int main(void)
and
int main(int argc, char **argv)
相当于
int main(int argc, char *argv[])
还值得注意的是,在C++中,int main()可以不带return语句,此时默认返回0。C99项目也是如此。是否返回0;是否应被省略值得商榷。有效的C程序主签名的范围要大得多。
效率不是主要功能的问题。根据C++标准,只能输入和离开一次(标记程序的开始和终止)。对于C,允许重新输入main(),但应避免。
在C和C++中定义main()函数的正确(最有效)方法是什么?int main()或void main()-为什么?
这些词“(最有效)”并不能改变问题。除非您处于独立的环境中,否则有一种普遍正确的方法来声明main(),那就是返回int。
main()在C和C++中应该返回什么?
一个int,纯粹而简单。它不仅仅是“应该返回什么”,而是“必须返回什么”。main()当然是其他人调用的函数。您无法控制调用main的代码。因此,必须使用类型正确的签名声明main以匹配其调用者。你在这件事上没有任何选择。你不必问自己什么效率更高或更低,什么风格更好或更差,或者诸如此类的问题,因为答案已经由C和C++标准完美地定义了。跟着他们就行了。
如果int main(),则返回1或0?
0表示成功,非零表示失败。同样,这不是你需要(或得到)选择的东西:它是由你应该遵守的接口定义的。