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

Yos*_*Bin 1 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;    
    }
Run Code Online (Sandbox Code Playgroud)

poc*_*hen 6

我不知道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" );
}
Run Code Online (Sandbox Code Playgroud)

在函数中调用回调函数只不过是有一个函数指针,并在完成计划作业时调用函数.

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

start
doing stuff
a: 1
going to call back
b: 2
b*2: 4
call back function being called
end
Run Code Online (Sandbox Code Playgroud)

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