利用結構體數組調用函數


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM