使用Glib向GSList添加自定义结构

时间:2013-01-28 11:32:31

标签: c linked-list structure glib singly-linked-list

我正在尝试使用函数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(请求成员不是结构或联合)。

我想我需要把它投到正确的类型,但我不知道如何。任何人吗?

1 个答案:

答案 0 :(得分:4)

我猜测data结构的GSList成员是一个void指针,即一个可以指向任何但没有任何其他类型信息的指针。< / p>

这意味着您必须使用类型转换:

((struct customstruct *) list->data)->var1