在博客上看到一份很好的代码故保存下来,
这种函数实现的思想很好,写代码时可以参考。
#include <stdio.h>
typedef void (*poniter_fun)(int);
typedef struct poniter_desc {
char *name;
poniter_fun fp;
}poniter_desc,*p_poniter_desc;
poniter_desc poniter_array[10];
p_poniter_desc p_poniter_array;
int register_fun(char *name, poniter_fun fp)
{
int i;
for(i = 0;i < 10;i ++){
if(!poniter_array[i].fp){
poniter_array[i].name = name;
poniter_array[i].fp = fp;
return 0;
}
}
return -1;
}
int unregister_fun(char *name)
{
int i;
for(i = 0;i < 10;i ++) {
if((poniter_array[i].name) && !strcmp(poniter_array[i].name, name)) {
if(poniter_array[i].fp) {
poniter_array[i].name = NULL;
poniter_array[i].fp = NULL;
printf("unregister_fun i= %d - %s \n", i, name);
return 0;
} else {
printf("poniter_array[%d].fp is NULL\n", i);
return -1;
}
}
}