如何让两个函数相互调用 C++

Posted

技术标签:

【中文标题】如何让两个函数相互调用 C++【英文标题】:How to have two functions that call each other C++ 【发布时间】:2013-01-30 07:34:51 【问题描述】:

我有 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

如果我将funcB 放在funcA 之前,则funcA 将无法看到funcB,反之亦然。

在此不胜感激。

【问题讨论】:

为什么大家都称它为 if 循环?绝对不涉及循环。 @chris 很好,它取代了 for 循环结构,不是吗? 【参考方案1】:

你想要的是forward declaration。在你的情况下:

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

【讨论】:

【参考方案2】:

forward declaration 可以工作:

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

【讨论】:

以上是关于如何让两个函数相互调用 C++的主要内容,如果未能解决你的问题,请参考以下文章

C++中类成员函数相互调用有啥好处?

第十七章 C++与Lua的相互绑定之ELuna

回调函数

python和c++的相互调用教程

C++和JavaScript脚本的相互调用

ThinkPHP 多个应用 相互之间 如何调用Action