взаимная рекурсия — Как иметь две функции, которые вызывают друг друга Переполнение стека

У меня есть 2 функции, такие как эта, которая делает обфускацию цикла if:

void funcA(string str)
{
size_t f = str.find("if");
if(f!=string::npos)
{
funcB(str);        //obfuscate if-loop
}
}

void funcB(string str)
{
//obfuscate if loop
funcA(body_of_if_loop);     //to check if there is a nested if-loop
}

Проблема с этим будет funcA не сможет увидеть funcB и наоборот если я положу funcB до funcA,

Буду признателен за любую помощь или совет здесь.

9

Решение

Что вы хотите предварительная декларация. В твоем случае:

void funcB(string str);

void funcA(string str)
{
size_t f = str.find("if");
if(f!=string::npos)
{
funcB(str);        //obfuscate if-loop
}
}

void funcB(string str)
{
//obfuscate if loop
funcA(body_of_if_loop);     //to check if there is a nested if-loop
}
15

Другие решения

предварительная декларация должно сработать:

void funcB(string str);

void funcA(string str)
{
size_t f = str.find("if");
if(f!=string::npos)
{
funcB(str);        //obfuscate if-loop
}
}

void funcB(string str)
{
//obfuscate if loop
funcA(body_of_if_loop);     //to check if there is a nested if-loop
}
9

По вопросам рекламы [email protected]