64,646
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
typedef int (*fp0)(void);
typedef int (*fp1)(int);
typedef int (*fp2)(int,int);
typedef int (*fp3)(int,int,int);
typedef int (*fp4)(int,int,int,int);
bool invoke_dispatch( int *ret, void *func, int num, int *param ) {
switch( num ) {
case 0:
*ret = ((fp0)func)();
break;
case 1:
*ret = ((fp1)func)(param[0]);
break;
case 2:
*ret = ((fp2)func)(param[0],param[1]);
break;
case 3:
*ret = ((fp3)func)(param[0],param[1],param[2]);
break;
case 4:
*ret = ((fp4)func)(param[0],param[1],param[2],param[3]);
break;
default:
return false;
}
return true;
}
int main() {
int params[256];
params[0] = (int)"hello world %d %f\n";
params[1] = (int)123456;
((double*)&(params[2]))[0] = 12.34;
int ret;
invoke_dispatch( &ret, (void*)printf, 4, params );
return 0;
}