【问题标题】:How to cout the return value of the main function "main()" in c++?如何在 C++ 中计算主函数“main()”的返回值?
【发布时间】:2016-09-04 18:42:41
【问题描述】:

如何计算主函数“main()”的返回值?我只是想检查一下main函数执行成功后的返回值是不是真的为“0”。

谢谢!

【问题讨论】:

  • main() 重命名为notmain()。添加一个新的main() 函数,该函数调用notmain(),并打印它返回的值。
  • 您决定返回值,而不是编译器。此外,拨打main()
  • echo $? 从 shell 通常可以很好地为您服务
  • 这是特定于平台的。 C++ 标准没有描述 C++(或主)之外的宇宙。此外,成功返回 0 是一个约定。不是每个人都喜欢这种约定。
  • 在返回之前将值发送到cout?这真的是一个问题吗?

标签: c++


【解决方案1】:

您可以使用 unix 命令来检查先前执行的命令的返回值,在本例中是您的 c 程序。

echo $?

shell 变量 $?是上一条命令的返回码。

How to find the return value of last executed command in UNIX?

如果你想检查代码中的值,只需在返回之前 cout 值。

【讨论】:

    【解决方案2】:

    您的意思是要测试以下是否返回 0?

    int main() {
      int rc = doSomething();
      return rc;
    }
    

    你可以这样做:

    int main() {
      int rc = doSomething();
      std::cout << rc << "\n";  // Just print it out before returning
      return rc;
    }
    

    但最好在运行应用程序的 shell 中检查返回值:

    在 UNIX/Linux 上(在 shell 中):

     > ./my_app
     > echo $?
     0
    

    在 Windows 上(在命令提示符中):

    > my_app.exe
    > echo %ERRORLEVEL%
    

    请注意,在 C++ 中,您不能拦截对 main() 的调用或自己调用它。

    3.6.1 主要功能

    函数main 不得在程序中使用。

    因此,您不应尝试包装main() 调用并打印其返回值。即使这样可行,它也不是可移植的(更不用说您实际上最终会运行您的应用程序两次)。

    【讨论】:

    • “所以你想要的都是不可能的”std::cout &lt;&lt; the_return_value; return the_return_value;.
    • "在 C++ 中,您不能拦截对 main() 的调用或自己调用它。"不,您可以这样做,请在我的答案中查看我的代码
    • 不,我不是要在 main() 中打印出函数的结果。如果成功运行,每个 main() 最后都会返回零。我想打印出这个返回值“0”。
    • @HassenDhia:你可以做很多事情。其中一些定义明确,另一些未定义。调用 main 未定义。
    【解决方案3】:

    main 很特别,主要是因为你不能自己调用​​它。它返回的值被传递回操作系统,它会做任何适当的事情。 C++标准不能规定操作系统如何处理各种返回值,所以它提供了一个抽象:可以用return EXIT_SUCCESS表示成功,也可以用return EXIT_FAILURE表示失败。 (您也可以使用return 0 表示return EXIT_SUCCESS;程序的运行时系统必须正确处理此问题)。宏 EXIT_SUCCESSEXIT_FAILURE 的值适用于编译程序的操作系统。虽然0EXIT_SUCCESS 的典型值,但操作系统当然可能需要不同的值,而EXIT_SUCCESS 将具有适合该操作系统的值。因此,即使您可以检查从 main 返回的值,它也不会告诉您太多信息,也不知道操作系统对成功程序的期望值。

    【讨论】:

      【解决方案4】:

      main()之后键入另一个函数,然后在该函数中键入main(); 但是有一个问题,main 将是第一个自动调用的函数。虽然,我确信有办法解决它。这就是调用 main 或 return main 的方式。 希望这会有所帮助。

      int main() {
      
      int i = 5;
      cout << i;
      }
      
      int second() {
       main();
      }
      

      【讨论】:

        【解决方案5】:

        欢迎来到 Stack Overflow!

        如果为0,则为0。你自己函数的返回值由你指定。如果您不确定,请添加困扰您的代码和/或问题。

        【讨论】:

          猜你喜欢
          • 2021-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-17
          • 1970-01-01
          • 2014-06-20
          • 2014-10-15
          • 2014-03-31
          相关资源
          最近更新 更多