c/c++语言开发共享C:typedef结构中的函数指针

我试图在C中创建一个链接列表,但试图在一些C ++样式类中很好地打包它。 我有一些问题,但在C中使用函数指针。

typedef struct linkedList { int count; struct msgNode *front; struct msgNode *back; void (*addMSG)(unsigned char *, int, struct linkedList *); } msgList; void addMSG(unsigned char *data, int size, struct linkedList *self); 

理想情况下,我希望你可以让你列出然后添加你可以简单地在结构中调用一个“方法”(函数),模拟你在C ++中看到的行为。

当我调用addMSG时,我得到了一个分段错误,当然这是因为addMSG没有指向一个函数。 但是,我不想指定一个函数指向我想要使用链表的每一次。 有没有很好的方法来获得函数指针而不必隐式地指向函数,或者你是否必须隐式地指向函数?

这只是这里显示的部分实现。 最后,这个结构将具有所有必要的function。 这只是为了让这个问题简短而重要。

    您需要将该function分配给该成员。 我还建议给他们不同的免费精选名字大全:

     typedef void (*addMSGFunc)(unsigned char *, int, struct linkedList *); typedef struct linkedList { int count; struct msgNode *front; struct msgNode *back; addMSGFunc addMSG; } msgList; void addMSGImpl(unsigned char *data, int size, struct linkedList *self) { ... } 

    然后在创建一个msgList之后:

     msgList myList; myList.addMSG = addMSGImpl; 

    那么你不能在struct的声明中添加一个默认值,但你可以做的是:

    喜欢:

     void addMSG(unsigned char *data, int size, struct linkedList *self); struct linkedList { int count; struct msgNode *front; struct msgNode *back; void (*addMSG)(unsigned char *, int, struct linkedList *); } DefaultList = {0, NULL, NULL, addMSG}; 

    只要您不实际使用它,就可以使用未初始化的函数指针。 如果你想用它来调用一个函数,那么显然你必须为它分配一个函数。 C无法猜出您要使用哪个function。

    如果你有一个链表结构,有时你需要一个函数,有时你不需要,那么只需在创建列表时为它指定NULL ,并让你的列表实现只在它不是NULL时调用该函数。

    如果它总是指向同一个函数,那么只需在构造函数中进行赋值。

    需要了解更多c/c++开发分享C:typedef结构中的函数指针,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享C:typedef结构中的函数指针相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980390.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐