c++ - 如何使用 C/C++ 创建回调函数

标签 c++ callback

C\C++ 是否支持回调函数机制?以及如何创建它? 我写了几个代码,用 C++ 创建回调函数,但它失败了..

    #include<iostream>
    using namespace std;

    void callee()
    {
         printf("callee\n"); 
         printf("calleeeeeeeeee\n"); 
    }

    void callback(void* func)
    {
         printf("callback\n");     
    }

    int main()
    {
        void (*call)(void*);
        void (*call2)(void);
        call2 = &callee;
        call = &callback;
        call((void*)call2);    
        getchar();
        return 0;    
    }

最佳答案

我不懂C++,我写了一些C代码,希望对你有帮助

#include <stdio.h>

void call( int, void ( *f )( int ) );
void called( int );

int main( int argc, char const *argv[] ){
    printf( "start\n" );
    call( 1, called );
    printf( "end\n" );
    getchar();
    return 0;
}

void call( int a, void ( *f )( int ) ){
    printf( "doing stuff\n" );
    printf( "a: %d\n", a );
    printf( "going to call back\n" );
    f( a * 2 );
}

void called( int b ){
    printf( "b: %d\n", b );
    printf( "b*2: %d\n", b*2 );
    printf( "call back function being called\n" );
}

在函数中调用回调函数无非是有一个函数指针,当你完成计划的工作时调用该函数。

我修改了代码并使其更加清晰,以显示您将如何使用回调。
这是您将看到的结果,如果您编译并运行它:

start
doing stuff
a: 1
going to call back
b: 2
b*2: 4
call back function being called
end

好吧,要么作者编辑了问题,要么有人为他编辑了问题,不再有 C 标签。如果您不想看到纯 C 代码,请忽略此答案。我只是把它留在这里,以防有人感兴趣。

关于c++ - 如何使用 C/C++ 创建回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15049568/

相关文章:

javascript - while循环javascript的回调方法

C++ lambda 表达式作为函数模板中的参数

c++ - std::cin 是否无法将命令行中的用户输入传递给类型为 char 的变量?

c++ - 如何声明一个指向成员东西m_pmd/m_pmf的成员指针并访问它们?

ruby-on-rails - 如何 Hook 保存!使用 rails before_save!打回来

javascript - Node.js 从回调函数中提取值

javascript - 将 dojo/Deferred 与异步函数和查询结合使用

c++ - 在使用库和 CMake 时遇到问题

c++ - 使用C++将UTF8字符打印到Linux控制台

JavaScript:如何在回调中影响外界?