C++ - 通过调用main()函数重新启动游戏

Q_A*_*Q_A 3 c++ program-entry-point

我正在建造一个小游戏.其中一个输入选项是重启游戏.我能想到这样做的唯一方法是从main函数中调用main函数

int main(int argc, char argv[]) {
 ...
 if (input == "restart") {
  main(argc, argv);
 }
Run Code Online (Sandbox Code Playgroud)

这是不好的形式?它会工作吗?

Lea*_*ros 12

不,C++标准不允许main手动调用.

引用标准(C++ 11:3.6.1主要功能)

函数main不得在程序中使用.main的链接(3.5)是实现定义的.将main定义为已删除或将main声明为内联,静态或constexpr的程序是错误的.名称main不以其他方式保留.


πάν*_*ῥεῖ 6

你不能main()递归地打电话.这实际上是未定义的行为.

改为使用循环:

int main() {
     bool restart = false;
     do {
         // Do stuff ...

         // Set restart according some condition inside of the loop
         if(condition == true) {
             restart = true;
         } // (or simplyfied restart = condtion;)
     } while(restart);
}
Run Code Online (Sandbox Code Playgroud)


kmd*_*eko 5

不要这样做.来自http://en.cppreference.com/w/cpp/language/main_function

main函数有几个特殊属性:

1)它不能在程序中的任何地方使用

a)特别是,它不能递归调用