我们一直知道,函数名其实就是个指针,指向这个函数的地址,因此我们调用函数其实就是让CPU去函数名指向的地址取代码来执行而已。这才有这个利用数组去调用函数的效果。
因为写程序过程中,需要根据菜单选项来决定调用那个模块函数,不想采用switch判断,想把函数地址存在一个数组里面,然后直接调用,感觉这样代码会更简单些,因为工作中见过别人的代码也是这样写的,
但是没有实际操作过,这次正好有小机会就想试试,还没一次成功,试了两次才搞定,囧,特意记下笔记提醒自己,也给有需要的新手一起分享下
typedef int (*TEST_HANDLER_f)(void); //void 可以根据需要改成你需要的参数
struct Factory_test_list_t
{
//const char* name;
//const char* param; //若你设定的func需要参数,该处就增加参数类型就好
TEST_HANDLER_f func;
};
static struct test_list_t test_lists[] =
{
{FactoryTest_Fun1},
{FactoryTest_Fun2},
{FactoryTest_Fun3},
};
test_lists[nSelectNum].func(); //注意调用时需要跟调用函数一样,func();当初就是这里我直接
//test_lists[nSelectNum].func,导致不成功,找了半天错误
