2011-02-20 4 views
2

delayloop()에 n 초마다 반복하는 while 및 time() 지연이있는 delayloop() 및 function()과 같은 두 가지 방법이 있습니다. 내 주요의 경우전체 프로그램을 지연시키는 방법의 시간 지연

, 내가 전화 : 호출되지 않습니다

delayloop(); 

다음

function(); 

방법 기능을(), 루핑 방법으로는 할 수없는 것 전에.

응용 프로그램이 delayloop() 함수를 전달하지 못하게하는 방법은 무엇입니까?

편집 :

delayloop();

void delayloop() { 
boolean delay = true; 
while (delay){ 
    time_t start_time, cur_time; 

     time(&start_time); 
     do 
     { 
       time(&cur_time); 
     } 
     while((cur_time - start_time) < 5); 

cout << "+5 seconds" << endl; 

} 

} 
+4

delayloop 함수 – Fox32

+0

의 코드를 표시합니다. "delayloop()에는 n 초마다 반복되는 delay() 및 delay() 지연이 있습니다." * n 초마다 * what *을 반복하려면? –

+0

@ Fox32 @FredOverflow @ Stéphane delayloop() 코드가 추가되었습니다. –

답변

2

정상적인 상태에서 제어는 프로그램을 순차적으로 진행합니다. function() 줄 앞에서 무한 루프를 입력하면 function이 호출되지 않습니다. 따라서 delayloop 함수에 오류가있는 것 같아 코드를 볼 수 있다면 도움이됩니다.

우리가 가지고 있습니다. delay을 false로 설정하지 않으므로 무한 루프가됩니다.

+0

프로그램의 다른 코드가 실행되는 동안 어떻게 매분마다 함수를 반복 할 수 있습니까? 도와 줘서 고마워. –

+0

@Jez 이렇게하려면 스레드를 사용해야합니다. 기본적으로 타이머가 만료 될 때마다 (매 N 초마다 또는 어떤 경우 에라도) 시작하도록 함수를 알려주며 독립 흐름으로 실행됩니다. 자세한 내용은 http://www.linuxselfhelp.com/HOWTO/C++Programming-HOWTO-18.html을 참조하십시오 (Google 검색을 통해 제공되는 다른 많은 자습서) –

+1

@Jez : 여러 개의 스레드를 사용합니다. 당신이 C + +를 배우는 첫날이라면, 지금 당장 들어가기를 원하는 것이 아닙니다. 채팅에서 정확하게 기억한다면. – fredoverflow

0

while 루프를 delayloop()의 루프 for으로 바꿉니다.

(while 루프의 종료 조건이 충족되지 않는다고 가정하면 for 루프를 쉽게 이해할 수 있습니다 ... 그러나 이것은 코드를 보지 않고이 두 함수의 목표를 이해하지 않고는 장시간입니다.)

당신이 코드를 추가

편집 후 :

첫 번째 while 조건 (delay이 수정되지 않습니다) 항상 사실이 왜 그것을 블록입니다. if으로 교체하십시오.

0

지연 상태가 변경되지 않으므로 항상 유지되며 루프가 무기한 실행됩니다.

0

변경하지 마십시오. delay; 루프에서 벗어날 길은 없습니다. 을 원하지 않고 변경하는 방법을 알려주기가 어렵습니다.delayloop()해야합니다.