C语言实现任何内置类型的两个数的相加,要求用回调函数
如题,上代码
[解决办法]
这是求int类型的回调实例,你照着把其他类型补齐就行了。
#include <stdio.h>
#include <stdlib.h>
typedef void* (*MY_ADD_FUNC)(void *pData1, void *pData2);
int *my_add_int(void *pData1, void *pData2)
{
int num = (*(int *)pData1 +*(int *)pData2);
int *pIntVal = #
return pIntVal;
}
/**
*@brief 回调函数
*/
void my_add_callback(MY_ADD_FUNC my_add_func, void *m, void *n)
{
int *pIntResults = NULL;
pIntResults = (int *)my_add_func(m, n);
printf("result = %d\n",*pIntResults);
}
int main()
{
int a = 3;
int b = 4;
my_add_callback(my_add_int, &a, &b);
getchar();
return 0;
}
[解决办法]
回调+表驱动
- C/C++ code
//请按需要添加其他内置类型typedef void (*Callback)(void* p1, void* p2, void* r);enum builtin_type{ CHAR, UCHAR};void add_char(void* p1, void* p2, void* r){ *(char*)r = *(char*)p1 + *(char*)p2; }void add_uchar(void* p1, void* p2, void* r){ *(unsigned char*)r = *(unsigned char*)p1 + *(unsigned char*)p2; }Callback callbasks[] = {&add_char, &add_uchar};int main(){ char c1 = 'a', c2 = 'b', sum = 0; (*(callbasks[CHAR]))(&c1, &c2, &sum); return 0;}
[解决办法]
用回调函数。。楼主是学生吧!!
项目中要求的是简单快捷!!宏定义