【发布时间】:2013-10-03 01:22:59
【问题描述】:
我试图在 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 没有指向函数。但是,我不想在每次我想使用链表时都指定一个函数来指向。有什么好的方法可以让函数指针不必隐式指向函数,还是必须隐式指向函数?
这只是这里展示的部分实现。最后,这个结构将具有所有必要的功能。这只是为了使这个问题简短明了。
【问题讨论】:
-
您正在创建不必要的动态开销。如果你想用 C 写,你应该接受 C 的习惯用法,用普通的函数来写。
-
In a previous answer of mine,我更详细地解释了如何以实际支持动态调度的方式完成此操作。
标签: c struct linked-list function-pointers typedef