我们一直知道,函数名其实就是个指针,指向这个函数的地址,因此我们调用函数其实就是让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,导致不成功,找了半天错误
时间: 2024-10-10 00:52:26