2012-08-10 2 views
0

아마도 여기에는 멋진 용어가 있습니다. 이 코드가 있다고 가정하자 :C++ CLI : 함수가 호출자에게 반환되지 않도록하는 방법?

void a(){ 
    b(); 
} 

void b(){ 
    c(); 
} 

void c(){ 
    a(); 
    // do something 
    if (FLAG_COMPLETE){ 
     return; 
    } 
} 

문제는 갈 것입니다 A-> B-> C-> A-> B->를 FLAG_COMPLETE가 될 때까지 다. 이후에 모든 호출을 역순으로 추적합니다. 착신자로부터 발신자 기능으로 돌아 오는 것을 피할 수있는 방법이 있습니까? 나는 이것이 조립하기에 아주 쉽다는 것을 안다.

저는 C++ CLI를 사용하고 있습니다. 루프에서 함수를 호출하여 스택 오버플로를 방지하고 싶습니다.

+0

참조 : http://stackoverflow.com/questions/34125/which-if-any-c-compilers-do-tail-recursion-optimization –

+0

나는 youve를이'stackoverflow'를 대상 참조) 매우 리터럴 . 이것은 본질적으로 상당히 부서진 디자인이지만, 다른 누군가의 코드에 대한 호의를 보았습니다. 재귀를 발견하면 무엇을하려고 했습니까? 주장 해? – marko

+0

@ReedCopsey, 고맙습니다. 그것은 내 수색에서 대단한 도움을 받았을 것입니다. – Mewa

답변

1

a(), b(), c()의 내용을 FLAG_COMPLETE이 설정 될 때까지 계속 실행하는 것처럼 들릴지 모르겠습니까? 그렇다면 명시 적으로 그렇게하지 않으시겠습니까?

void RunUntilComplete() 
{ 
    while(!FLAG_COMPLETE) 
    { 
     ContentsOfA(); 
     ContentsOfB(); 
     ContentsOfC(); 
    } 
} 
관련 문제