【问题标题】:Is the main function callable in C++ or C [duplicate]主函数在 C++ 或 C 中是否可调用 [重复]
【发布时间】:2016-02-24 02:45:51
【问题描述】:

我可以从其他函数调用 C/C++ 中的 main 方法吗?它似乎有效,但我不知道它是否是 C++ 中的一个好的软件设计。请告诉我利弊? 谢谢你。

【问题讨论】:

  • 请选择C和C++之一,答案可能不同。
  • 事实上,答案不同的。
  • 你为什么要这样做?
  • main 函数通常是运行时的入口点。根据系统的不同,运行时保证存在可以调用以启动程序的特定函数。在所有情况下,进入应用程序只需要一个主函数。如果您进行了良好的设计,那么您的程序只需要一个这样的 main 函数

标签: c++ c c++11


【解决方案1】:

在 C 中你可以。在 C++ 中你不能。

引用 C++ 标准(§3.6.1.3):

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

C 标准中没有禁止调用main

调用main 是否是好的设计是相当基于意见的,但通常使用循环会更好。

【讨论】:

  • +1,仅回答在这种情况下说明 C 和 C++ 之间的区别。有了标准参考就完美了。
  • 请用标准报价支持这一点。
【解决方案2】:

根据 C++ 标准

5.2.2.9 "允许递归调用,但名为 main 的函数除外"

【讨论】:

    【解决方案3】:

    您已经确定这是可能的。但是,它会使您的整个程序递归。它还可能使您的代码更难理解。

    所以我真的很难想象有什么专业人士可以做到这一点。

    【讨论】:

    • 我强烈怀疑它在某种程度上确实有效,结果取决于实现 - 与其他类别的未定义行为一样。
    • 一些程序,如 Knights Tour 或八皇后,可以通过递归 main() 函数来简化。
    • @ThomasMattews 我不知道你为什么不创建一个新的递归函数并从main 调用它。这不仅更标准,而且允许您在开始递归之前执行任何初始化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多