2013-10-09 3 views
0

어떻게 main()이 호출 될 때마다 변수의 값을 기억합니까?main의 C++ 저장 횟수가

즉,이 프로그램을 내가 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; 
+2

파일에 번호를 저장하십시오. 그것을 읽을 수있는 프로그램을 만드시겠습니까? –

+0

숫자를 디스크에 유지하십시오. – Chad

답변

0

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(); 

    /* ... */ 
} 

희망!

1

을 늘리려면. 각 프로그램 실행은 독립적입니다. mainCallCounter을 어딘가에 저장하고 다음에 응용 프로그램이 시작될 때 다시 읽어야합니다. 파일에 기록하는 것이 하나의 옵션이거나 다른 하나는 Windows 레지스트리 또는 Mac OS X 기본값 시스템과 같은 것일 수 있습니다.

2

메인은 프로그램의 진입 점입니다. Main은 한 번 (보통) 호출되며, 종료되면 프로그램이 종료되고 정리됩니다.

분명히 이것은 로컬 변수가 충분하지 않다는 것을 의미합니다. 애플리케이션보다 오래 지속되는 외부 저장 장치 (예 : 파일 시스템)가 필요합니다.

+0

'main'은 C++에서 한 번, 마침표로 불립니다. –

+0

@CarlNorum : 맞습니까? 'int main() {main(); }' –

+0

그것은 C++ 표준에 의해 금지되어 있습니다. "함수'main'은 프로그램 내에서 사용되지 않아야합니다." –

관련 문제