为什么C和C++中main函数的类型留给用户定义?

为什么 main() 是用户定义的函数?

我什么时候使用 void main() 和 int main()?

Boney2009 回答:为什么C和C++中main函数的类型留给用户定义?

EDIT 这个答案并不完整,因为它没有真正解决奇怪的句子或其他实现定义的方式".我现在写了一个更完整的答案它还解决了 C90、C11 和 C++.编辑结束

以下是 C 标准的说明(ISO C 9899:1999):

5.1.2.1 独立环境

5.1.2.1 Freestanding environment

在一个独立的环境中(在其中 C程序执行可能发生没有任何经营利益系统),名称和类型程序启动时调用的函数是实现定义./../效果程序终止在一个独立的环境是实现定义.

5.1.2.2 托管环境

不需要提供托管环境,但是应符合以下规格(如果有).

5.1.2.2.1 程序启动

程序启动时调用的函数名为主要的.实现声明没有这个函数的原型.它应用 int 返回类型定义并且没有参数:

int main(void) {/* ... */}

或者带两个参数(参考这里作为 argc 和 argv,尽管任何可以使用名称,因为它们是本地的到他们所在的功能声明):

int main(int argc, char* argv[]) {/*... */}

C++ 标准中的文本或多或少相同.请注意,文本中的程序启动"是托管环境的子条款.

这意味着:

  • 如果您的程序在无主机环境中运行(您的程序是嵌入式系统或操作系统),它可能有任何返回类型.void main() 是最常见的.

如果您的程序在托管环境中运行(在操作系统之上),main() 必须返回 int,并且可能有其他参数.

这篇关于为什么C和C++中main函数的类型留给用户定义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持前端之家!

本文链接:https://www.f2er.com/3188519.html

大家都在问