2
我有一个C结构,看起来像这样Ç - 使用工会,分配内存
typedef struct event_queue{
Event* event;
int size;
int front;
int count;
int delay;
} event_queue;
这是一个基本的循环队列。事件值是一个EventPointers数组,每X次遍历一次事件。 它初始化像
p->event = calloc(p->size, sizeof(Event));
的事情是,我想做一个类似的队列中,有类似的功能,要排队等类型的类似事件,但略有不同的数据。起初,我只是想分开排队,并分别遍历它们,但功能如此重复,似乎我只是做错了。 想象“姐妹”队列是完全一样的,但是指向“事件”的不同类型。
我应该用这个工会吗?如
typedef struct event_queue{
union{
Event* event;
VisualEvent* visual;
} data;
unsigned char* datatype; //array of same size as data for every individual member
int size;
int front;
int count;
int delay;
} event_queue;
但是在这种情况下,我该如何为阵列分配内存?我应该让他们分开吗,这是一个坏主意?
哦,我真的没有想到这一点。我会马上尝试! –
对不起,我想我最后的联盟有点错了。我想现在没问题。作为替代方法,您可以将'Event'设为'struct {EEventType标签;联盟{EventOne e1; EventTwo e2; }};' –