首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言兑现任何内置类型的两个数的相加,要求用回调函数

2012-09-27 
C语言实现任何内置类型的两个数的相加,要求用回调函数如题,上代码[解决办法]这是求int类型的回调实例,你照

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 = &num;
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;}
[解决办法]
用回调函数。。楼主是学生吧!!

项目中要求的是简单快捷!!宏定义

热点排行