【问题标题】:What does main() return? [duplicate]main() 返回什么? [复制]
【发布时间】:2012-10-18 16:59:22
【问题描述】:

可能重复:
What should main() return in C/C++?

这个函数返回什么值。只是简单的主要。

main()
{
...
}

如果一个函数有两个 main ,会发生什么?

【问题讨论】:

  • "如果一个函数有*两个*主电源"?
  • 显然第一个'main'优先,除非你在第二个'main'上设置'FirstMain'属性,那么顺序无关紧要
  • 我会回答你的问题,为什么?当它无法编译时,为什么要放入两个电源?为什么不遵循标准,只让一个 main 返回一个 int?
  • 我不会那样做,这是我面试时问的

标签: c


【解决方案1】:

这个函数返回什么值。

main 需要声明为返回 int。返回值被传递给调用者,通常是操作系统。

5.1.2.2.1Program startup

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

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

或带有两个参数(此处称为 argc 和 argv,尽管可以是任何名称) 使用,因为它们在声明它们的函数中是本地的):

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

如果一个函数有两个 main ,会发生什么?

链接器报告错误。

【讨论】:

    【解决方案2】:

    在 C99/C11 中,如果在托管环境中达到 }main 将返回 0。否则返回值未定义。

    C11,§ 5.1.2.2.2 程序执行

    [...] 到达终止 main 函数的 } 返回值 0。

    【讨论】:

      【解决方案3】:

      假设您使用的是 C89 或更早版本的编译器,那么

      main()
      {
        ...
      }
      

      返回int。如果您使用的是 C99 或更高版本的编译器,则会出现错误。

      从 C99 开始,如果在没有显式返回的情况下到达 main 的结尾 },则返回值为 0。不确定 C89 或更早版本。

      不确定“一个函数有两个主电源”应该是什么意思。如果程序 定义了两个main 函数,那么您很可能会在链接时遇到重复定义错误。

      【讨论】:

        猜你喜欢
        • 2012-10-23
        • 2014-02-25
        • 1970-01-01
        • 2012-09-16
        • 2012-07-16
        • 2012-10-23
        • 2011-06-18
        • 1970-01-01
        相关资源
        最近更新 更多