如何从main()继续到第二个main2()?

时间:2019-06-26 07:53:23

标签: c++ main

我有问题。这是简化版:

    #include <iostream>
    using namespace std;
    int main() {
      cout << "Hello!";
      return 0;
     }
    string name = "My name is ______";
    int main2() {
      cout << name;
      return 0;
     }

我试图删除第一个返回0;在main()中,但是它什么也没做。我想以某种方式从main()启动main2()。可能吗? 我尝试运行代码(我使用repl.it),但未返回任何错误消息。我还尝试从终端运行它,它只会显示Hello!。

3 个答案:

答案 0 :(得分:3)

是的。尝试这样的事情:

#include <iostream>
using namespace std;

// Forward declare |main2|.
int main2();

int main() {
  cout << "Hello!";
  main2();
  return 0;
}
string name = "My name is ______";
int main2() {
  cout << name;
  return 0;
}

要在此处详细说明C ++和Python之间的区别:在C ++中,main是程序的entry point。因此,在C ++中,您可以将main函数的开始等同于Python的“文件顶部”。您的程序将在main的顶部开始运行,并在其末尾停止运行。从main函数开始未调用(或传递调用)的所有内容都不会执行。

答案 1 :(得分:3)

您编写的内容大致等同于以下Python:

def main():
  print('Hello')
  return 0

name = 'My name is ____'

def main2():
  print(name)
  return 0

if __name__ == '__main__'
  sys.exit(main())

我相信现在很清楚为什么main2从未执行过:从未调用过。

请注意,C ++中的main函数是在程序启动时自动调用的一个函数,退出main会终止程序。必须在main内部调用程序运行时想要发生的任何事情。

还请注意,必须先声明名称(例如函数),然后才能使用该名称。因此,您必须将main2的定义移到main的定义之前,或者至少在其中声明main2。您可以这样做:

#include <iostream>

using namespace std;

int main2();

int main() {
  cout << "Hello!";
  return main2();
}

string name = "My name is ______";

int main2() {
  cout << name;
  return 0;
}

答案 2 :(得分:0)

您必须在main()内部调用main2():

#include <iostream>
    using namespace std;

        string name = "My name is ______";
        int main2() {
          cout << name;
          return 0;
         }

        int main() {
          cout << "Hello!";
          main2();
          return 0;
         }