我正在尝试使用函数g_slist_append(list,& structure)将结构添加到单链表中。这似乎有用(它正在添加指针),但是在阅读链表时我似乎找不到查看结构中元素的方法。
我的结构如下:
struct customstruct
{
int var1;
int var2;
char *string_1;
}
然后,我列出了一个清单:GSList *list = NULL;
然后,我追加这样的结构的一个实例:
struct customstruct list_entry;
list_entry.var1 = 1;
list_entry.var2 = 2;
list_entry.string_1 = "String";
list = g_slist_append(list, &entry);
printf("Entry var1 = %d\n", list->data->var1);
最后一行失败,因为找不到var1
(请求成员不是结构或联合)。
我想我需要把它投到正确的类型,但我不知道如何。任何人吗?
答案 0 :(得分:4)
我猜测data
结构的GSList
成员是一个void
指针,即一个可以指向任何但没有任何其他类型信息的指针。< / p>
这意味着您必须使用类型转换:
((struct customstruct *) list->data)->var1