C:typedef结构中的函数指针

Edw*_*win 7 c struct typedef function-pointers linked-list

我试图在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);
Run Code Online (Sandbox Code Playgroud)

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

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

这只是这里显示的部分实现.最后,这个结构将具有所有必要的功能.这只是为了保持这个问题简短而重要.

Asa*_*saf 21

您需要将该功能分配给该成员.我还建议给他们不同的名字:

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)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在创建一个msgList之后:

msgList myList;
myList.addMSG = addMSGImpl;
Run Code Online (Sandbox Code Playgroud)

  • @ saru95 当你调用它时:`myList.addMsg(buffer, 20, list)` (2认同)