我們一直知道,函數名其實就是個指針,指向這個函數的地址,因此我們調用函數其實就是讓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,導致不成功,找了半天錯誤
