我在C语言中创建了一个简单的列表结构,使用void*指针来保存任何类型的数据,类似于:
struct node
{
void *the_data;
node *next;
};
它目前运行正常,但我有一些列表,例如一个列表仅包含struct_a,另一个列表仅包含struct_b。我需要检查列表的第一个元素是struct_a类型还是struct_b类型,在单个if()问题中,以便我知道该列表持有的数据。如何做到这一点?谢谢。
编辑:
我想出了一个简单的解决方案,现在对于这个问题已经足够了,不知道它是否最好。
struct node
{
void *data;
node *next;
}
我添加了一个"描述符"节点,其中包含第一个节点的地址和类型信息:
struct list_desc
{
node *list;
short int type;
}
我将使用它和一些类似于宏的东西
#define __data_type1 10
#define __data_type2 20
所以我之后可以进行比较,例如 if( struct.type == __data_type1 ) 等等...
the_data
可以指向不同的类型吗? - Eugene Sh.