gpt4 book ai didi

c++ - 在 `return 0` 末尾设置 `main` 可选的理由是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:39:29 25 4
gpt4 key购买 nike

从 C99 标准开始,如果没有提供 return,编译器需要生成等效的 return 0return EXIT_SUCCESSmain 的末尾。大约在同一时间,C++ 语言标准也发生了相应且相同的更改。我对两者的原因很感兴趣,我猜想它们不太可能是完全独立且不相关的变化。

我的问题是:

记录在案的原因是什么?

一个理想的答案是引用 C 和 C++ 的权威来源,这就是为什么我用这两种语言标记这个问题。

请注意,与问题 What the reasons for/against returning 0 from main in ISO C++? 不同,我不是在询问是否要在我的程序中编写 return 0 的建议——我是在问为什么语言标准本身被改变了。


为了帮助理解问题的目的,这里有更多的上下文:

  1. 了解做出更改的原因有助于决定如何使用它。
  2. 基本原理通常包含在标准本身中。例如,C90 标准包括许多解释性脚注,例如脚注 36,开头是“此列表的意图......”

在我在这里提问之前,我自己研究了寻找答案的标准,但没有找到答案。我被要求帮助为一组程序员编写两种语言的编码标准,我想确保我理解为什么存在这个功能,以便我可以准确地向其他人解释它的用途。

最佳答案

The New C Standard栏目5.1.2.2.3 Program termination作者 Derek Jones C99 标准对这一行的评论:

reaching the } that terminates the main function returns a value of 0

是:

The standard finally having to bow to sloppy existing practices.

这表明其基本原理是解决关于从 main 显式返回值的不良编程实践。在此之前,返回的状态是未定义的。

他指出,即使在 C90 中,许多实现也已经实现了这一点,因此这一变化已经反射(reflect)了通用实现这一事实可能也有所帮助。

关于c++ - 在 `return 0` 末尾设置 `main` 可选的理由是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31394171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com