【问题标题】:No warning in Visual Studio when main function has no “return 0” statement当 main 函数没有“return 0”语句时,Visual Studio 中没有警告
【发布时间】:2020-11-08 15:59:27
【问题描述】:
#include<iostream>

using namespace std;

int main()
{
    cout << "hello world";
}

我不应该收到编译器警告吗? return 0; 不存在。

【问题讨论】:

  • 没有。 main 是例外,它隐式返回 0。
  • ^^。尽管如此,一些编译器确实警告控制是否可以到达main()的右括号,但是这样的程序不会因此不符合标准,并且它们的行为不会受到影响(除非main()被递归调用并且调用者使用它的返回值)。
  • 另外,请注意不要假设您的编译器会甚至可以警告您有关代码的所有潜在问题。他们不能也不会。他们甚至不需要诊断他们能够识别的所有问题。您收到什么警告以及如何获得它们是特定于实现的。
  • @JohnBollinger -- 在 C++ 中不允许递归调用 main,无论您如何处理返回值。

标签: c++ visual-studio


【解决方案1】:

main是特殊的,这是标准特别允许的,功能相当于有“return 0;”在末尾。 main 是唯一一个具有这样的假定返回值的函数。

【讨论】:

    【解决方案2】:

    http://eel.is/c++draft/basic.start.main#5

    如果控制从 main 的复合语句的末尾流出,则效果等同于操作数为 0 的返回(另请参见 [except.handle])。

    【讨论】:

      【解决方案3】:

      我认为这也取决于您使用的 IDE。我发现使用代码块会发出警告,而 Virtual Studio 工作正常

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 2011-03-10
        • 2015-06-01
        • 2019-01-25
        相关资源
        最近更新 更多