【问题标题】:C++ store number of times main is called [closed]C ++存储调用main的次数[关闭]
【发布时间】:2013-10-17 12:51:27
【问题描述】:

如何让 main() 在每次调用时记住变量的值?

即如果我第一次运行这个程序我想要mainCallCounter = 0,但是当我再次被调用时我希望它增加计数器

#include <iostream>   
using namespace std;

static int mainCallCounter = 0;

void outputMainCallCount()
{
   cout << "Main was called" << mainCallCounter << "times." << endl;

}

int main()
{

    outputMainCallCount();
    mainCallCounter++;

return 0;

【问题讨论】:

  • 将号码存储在文件中。让程序读取它?
  • 将号码保存到磁盘。

标签: c++ static main


【解决方案1】:

Main 是程序的入口点。 Main 被调用一次(通常),当它退出时,您的程序将被拆除并清理。

显然这意味着局部变量是不够的。您需要某种比您的应用程序更持久的外部存储,即文件系统。

【讨论】:

  • main 在 C++ 中被调用一次,句号。
  • @CarlNorum:对吗? int main() { main(); }
  • 这是 C++ 标准所禁止的。 "函数main 不得在程序中使用。"
  • @CarlNorum:并不意味着它没有发生。
  • 讨论未定义行为的潜在结果几乎无关紧要。
【解决方案2】:

你不能。程序的每次运行都是独立的。您需要将mainCallCounter 保存在某处,并在下次启动应用程序时重新读取。将其写入文件是一种选择,另一种可能是 Windows 注册表或 Mac OS X 默认系统等。

【讨论】:

    【解决方案3】:

    所有在 C++ 中声明的变量都会在程序结束时过期。如果您想永久记住程序运行了多少次,则需要将该数据存储在外部文件中,并在运行程序时对其进行更新。

    例如:

    #include <iostream>
    #include <fstream>
    
    int numTimesRun() {
        std::ifstream input("counter.txt"); // assuming it exists
        int numTimesRun;
        input >> numTimesRun;
        return numTimesRun;
    }
    
    void updateCounter() {
        int counter = numTimesRun();
        std::ofstream output("counter.txt");
        output << counter;
    }
    
    int main() {
        int timesRun = numTimesRun();
        updateCounter();
    
        /* ... */
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2021-10-24
      • 2020-01-09
      • 2021-12-06
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      相关资源
      最近更新 更多