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)
我不知道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代码,请忽略此答案.我会把它留在这里以防万一有人感兴趣.