我有问题。这是简化版:
#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!。
答案 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;
}