在 C 和 C++ 中定义 main()
函数的正确(最有效)方法是什么 --- int main()
或 void main()
为什么?论点又如何?如果 int main()
那么 return 1
或 return 0
?
这个问题有很多重复,包括:
- C 的
main()
函数的有效签名是什么? main()
函数的返回类型void main()
和int main()
之间的区别?main()
在 C++ 中的签名main()
的正确声明是什么? — 对于 C++,确实有一个很好的答案。main()
C 中函数的样式main()
C 中方法的返回类型int main()
与void main()
在 C
有关的:
- C++ —
int main(int argc, char **argv)
- C++ —
int main(int argc, char *argv[])
char *envp[]
作为main()
的第三个参数是可移植的吗?int main()
函数必须在所有编译器中返回一个值吗?- 为什么 C 和 C++ 中的
main()
函数的类型留给用户定义? - 为什么
int main(){}
编译? main()
在 C++14 中的合法定义?
原文由 Joel 发布,翻译遵循 CC BY-SA 4.0 许可协议
main
的返回值表示程序是如何退出的。正常退出由来自main
的 0 返回值表示。非零返回表示异常退出,但对于如何解释非零代码没有标准。正如其他人所指出的,void main()
被 C++ 标准禁止,不应使用。有效的 C++main
签名是:和
这相当于
还值得注意的是,在 C++ 中,
int main()
可以不带返回语句,此时默认返回 0。对于 C99 程序也是如此。return 0;
是否应该省略还有待商榷。有效的 C 程序主签名的范围要大得多。效率不是
main
功能的问题。根据 C++ 标准,它只能进入和离开一次(标记程序的开始和终止)。对于 C,允许重新输入main()
,但应避免。