利用结构体数组调用函数


    我们一直知道,函数名其实就是个指针,指向这个函数的地址,因此我们调用函数其实就是让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